WEB项目Docker容器化部署

WEB项目台容器化部署手册

参考文件
https://www.cnblogs.com/name-lizonglin/p/12841711.html
https://blog.csdn.net/qq_29901819/article/details/85317167

Linux下搭建docker

配置阿里云镜像dockersYUM
[root@centos-linux ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
[root@centos-linux ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
安装 Docker-CE
[root@centos-linux ~]# sudo yum install docker-ce
启动docker
# 开机自启
[root@centos-linux ~]# sudo systemctl enable docker
# 启动docker服务  
[root@centos-linux ~]# sudo systemctl start docker
参看版本
[root@centos-linux ~]# docker -v
Docker version 19.03.8, build afacb8b
查看详情
[root@centos-linux ~]# docker version
docker version :显示 Docker 版本信息。
[root@centos-linux ~]# docker info
显示 Docker 系统信息,包括镜像和容器数。。

Linux下使用Docker打包web项目镜像部署完整过程

获取Centos镜像

说明:利用docker制作容器生成项目镜像,离不开Centos镜像的支持,需获取 Centos镜像。

执行命令:# docker pull centos  等待下载。

检查是否下载完成

执行命令:# docker images (此命令是查看docker下所有镜像的命令)
上传 tomcat、jdk、项目war包

查看虚拟机根目录

执行命令:# cd /  进入根目录
执行命令:# ls -1  查看文件目录 -1 是代表纵向排列查看,也可使用ls ll 查看。

上传文件

为方便查找文件,将要上传的tomcat、jdk、war放到opt目录下。

为减少失误,推荐使用第三方软件进行服务器上的文件管理。

解压文件至当前目录并删除安装包。

在opt目录下,

执行命令:# tar -zxvf apache-tomcat-8.5.61.tar.gz
执行命令:# tar -zxvf jdk-8u211-linux-x64.tar.gz

查看解压文件,
执行命令:# ls -1  可看到已解压的文件。

删除安装包,
执行命令:# rm -rf apache-tomcat-8.5.61.tar.gz
执行命令:# rm -rf jdk-8u211-linux-x64.tar.gz
执行命令:# ls -1  查看发现安装包已经删除

将项目war包移动至tomcat的webapps下。

Opt目录下执行命令:# mv web.war /opt/apache-tomcat-8.5.61/webapps
到tomcat的webapps目录下查看文件,发现移动成功。

指定Tomcat 默认访问页面为项目首页

进入Tomcat下的conf目录编辑server.xml文件。
执行命令:# cd /opt/apache-tomcat-8.5.61/conf
执行编辑命令:# vi server.xml

按“i”进入编辑模式,在“<Host></Host>”标签内加入:

 <Context docBase="/opt/tomcat/webapps/web" path="" debug="0" reloadable="true"></Context>

编辑完成后,按ESC ,退出编辑模式,输入“:”,要保存输入“wq”,不保存输入“q!”。此处tomcat名称为“tomcat”的原因是后面用Dockerfile生成镜像的时候对其重命名了。
编写DockerFile
在/opt目录下创建一个文件,命名为Dockerfile

执行创建命令:# touch Dockerfile
#指定操作的镜像
 
FROM centos
 
 
# 维护者信息
 
MAINTAINER XXXX_NAME
 
 
#执行命令:创建目录
 
RUN mkdir -p /opt
 
 
#将jdk-8u211添加到镜像centos的/opt/目录下,并命名为jdk
 
ADD jdk1.8.0_211 /opt/jdk
 
 
#将apache-tomcat-8.5.61添加到镜像centos的/opt/tomcat目录下,并命名为tomcat
 
ADD apache-tomcat-8.5.61 /opt/tomcat
 
 
#添加环境变量
 
ENV JAVA_HOME /opt/jdk
 
ENV CATALINA_HOME /opt/tomcat
 
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
 
 
#暴露8080端口
 
EXPOSE 8080
EXPOSE 8005
EXPOSE 8009
 
 
#启动时运行tomcat
 
CMD ["/opt/tomcat/bin/catalina.sh","run"]

编辑完成后,按ESC ,退出编辑模式,输入“:”,要保存输入“wq”回车,不保存输入“q!”回车。

回车后文件编辑结束

涉及命令说明:

FROM:指定基础镜像,并且必须是第一条命令,这里拿到的镜像是docker pull centos

MAINTAINER:指定作者

RUN: 运行指定的命令

ADD: 复制命令,把文件复制到镜像中。

ENV: 设置环境变量

EXPOSE: 功能为暴漏容器运行时的监听端口给外部

CMD: 指定容器启动时运行的命令
设置Dockerfile权限
执行命令:# chmod 777 Dockerfile
通过Dockerfile生成镜像
执行命令:# docker build -t web .

-t 是设置tag名称, 命名规则为[镜像名]:tag(若不添加版本号,默认latest)
. 表示使用当前目录下的Dockerfile文件(注意语句后面有一个点)
查看刚才生成的镜像文件。
执行命令:# docker images
测试镜像,生成容器。
执行命令:# docker run -d -p 8080:8080 --name web web:latest 
说明:

-d 后台运行     
-p 端口映射  宿主机port : 容器port
--name 指定容器运行名称
参看日志:
docker logs -f -t --since="2017-05-31" --tail=10 web

执行docker run命令时有可能会出现错误,这个跟SELinux防火墙有关。

查看SELinux状态:

执行命令:# getenforce

SELinux共有3个状态enforcing (执行中)、permissive (不执行但产生警告)、disabled(关闭)。如果原先SELinux是disabled(关闭)状态,则需要将SELinux状态修改为enforcing,并重启服务器。

修改SELinux状态:# vi /etc/selinux/config

查看内容:

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled                

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

查看正在运行容器:

# docker ps 查看正在运行的容器
浏览器访问测试

浏览器输入访问地址http://192.168.88.128:8080/web发现可正常访问项目

生成镜像副本
执行命令:# docker commit -p ead2d7db9c31 web-backup 

其中,“ead2d7db9c31”是指容器ID,该命令会生成一个作为Docker镜像的容器快照(镜像副本),名称为web-backup。

镜像副本导出为tar包

由于部署的时候大多是内网部署,没有外网,所以我们选择在自己的虚拟机中将已经做好的镜像副本打包为tar。然后连接到待部署的服务器再上传上去。

执行命令:# docker save -o web.tar web-backup

可以在tar包所在的文件夹目录下执行ls -1命令查看生成的tar包。

在待部署的Linux系统中加载镜像文件

先将生成的web.tar放入待部署的服务器路径,这里为了方便也放入/opt/路径。

注意:待部署的服务器也需要安装Docker,步骤上面已经讲过。

在/opt/路径下执行命令:docker load -i  web.tar

可以通过docker images查看docker镜像是否加载到服务器中。

启动镜像文件
执行命令:# docker run -d -p 8080:8080 --name web-backup web-backup:latest 
参看日志:
docker logs -f -t --since="2017-05-31" --tail=10 web-backup

docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。

而docker start的作用是,重新启动已存在的镜像。也就是说,如果使用这个命令,我们必须事先知道这个容器的ID,或者这个容器的名字,我们可以使用docker ps找到这个容器的信息。

访问项目
浏览器输入地址访问项目:http://192.168.88.128:8080/web

Docker常用命令

(一)docker的启动、停止、重启、查看

[root@localhost ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@localhost ~]# service docker stop

Redirecting to /bin/systemctl stop docker.service


[root@localhost ~]# service docker start

Redirecting to /bin/systemctl start docker.service

(二)docker创建一个容器

docker run

(三)查看docker启动的容器列表

[root@localhost ~]# docker ps

CONTAINER ID        IMAGE       COMMAND        CREATED        STATUS         PORTS          NAMES

724e7701f0d4        centos           "/bin/bash"   4 minutes ago     Up 4 minutes                    yufei_6

f9097691663e        centos        "/bin/bash"      5 minutes ago     Up 5 minutes                    yufei_5

(四)查看docker创建的所有容器

[root@localhost ~]# docker ps -a

CONTAINER ID        IMAGE      COMMAND         CREATED     STATUS      PORTS        NAMES

724e7701f0d4        centos       "/bin/bash"       5 minutes ago  Up 5 minutes              yufei_6

f9097691663e        centos       "/bin/bash"       6 minutes ago  Up 6 minutes              yufei_5

e59a540fb979        centos       "/bin/base"       6 minutes ago   Created                  yufei_4

(五)启动、停止、重启某个docker 容器

[root@localhost ~]# docker start yufei_01

yufei_01

[root@localhost ~]# docker stop lpzygl

yufei_01

[root@localhost ~]# docker restart yufei_01

yufei_01

[root@localhost ~]#

(六)删除某个容器,若正在运行,需要先停止

[root@localhost ~]# docker rm lpzygl

Error response from daemon: You cannot remove a running container 2d48fc5b7c17b01e6247cbc012013306faf1e54f24651d5e16d6db4e15f92d33. Stop the container before attempting removal or use -f

[root@localhost ~]# docker stop yufei_01

yufei_01

[root@localhost ~]# docker rm yufei_01

yufei_01

[root@localhost ~]#

(七)删除所有容器

[root@localhost ~]# docker rm $(docker ps -a -q)

Error response from daemon: You cannot remove a running container 724e7701f0d4a830167e21f75b470235a0e408fd6cc2913403426e96f69cba11. Stop the container before attempting removal or use -f

Error response from daemon: You cannot remove a running container f9097691663ee36f9d2ee56afbdcca0eeb8b63e5590ddf18c0c42954c93b9f06. Stop the container before attempting removal or use -f

[root@localhost ~]#

[root@localhost ~]#

[root@localhost ~]# docker stop yufei_6

yufei_6

[root@localhost ~]# docker stop yufei_5

yufei_5

[root@localhost ~]# docker rm $(docker ps -a -q)

724e7701f0d4

f9097691663e

[root@localhost ~]#

注意:删除容器前要先停止容器

(八)删除镜像

root@runoob:~# docker rmi -f runoob/ubuntu:v4

Untagged: runoob/ubuntu:v4

Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be

Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73

语法:

docker rmi [OPTIONS] IMAGE [IMAGE...]

[OPTION]说明:

-f :强制删除

--no-prune :不移除该镜像的过程镜像,默认移除

docker images

docker images : 列出本地镜像。
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

--digests :显示镜像的摘要信息;

-f :显示满足条件的镜像;

--format :指定返回值的模板文件;

--no-trunc :显示完整的镜像信息;

-q :只显示镜像ID。


docker ps : 列出容器

docker ps : 列出容器

-a :显示所有的容器,包括未运行的。

-f :根据条件过滤显示的内容。

--format :指定返回值的模板文件。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

--no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。
posted @ 2022-03-16 14:01  漆黑如夜,孑然踽行  阅读(637)  评论(0)    收藏  举报