实践篇主要以各容器的挂载和附加命令为主。
本章内容
Dockerfile基础命令详解。
本文实操全部基于Ubuntu 20.04
宿主机 => linux服务器本身
Docker => 20.10.22
从该章开始,我们就进入了Docker实践篇系列了,主要介绍Docker相关附加命令,与实际日常生产部署注意点等,本章主要围绕Docker安装并运行之Nginx、Tomcat、Jenkins、GitLab,大部分命令来源于DockerHub官网,我们将本章分为上下俩节,为演示方便这里我们新建挂载目录/install_ls,并对对应的软件本身建立目录,命令如下。
mkdir -p /install_ls/nginx/ /install_ls/tomcat /install_ls/jenkins /install_ls/gitLab

Docker安装并运行Nginx
前边的章节其实很多都是拿Nginx做的例子,但这里还是要详细演示一遍,以及在实际生产中该如何进行配置和进行挂载,这里我们Nginx的版本以1.22.0为主,在挂载目录下新建配置文件目录,并从Nginx官网下载对应的配置文件并上传到服务器中,也可以通过直接启动一个nginx容器来复制运行中容器的配置文件到宿主机,这里我们通过第二种方式来进行演示。
-
首先我们在
Nginx挂载目录下新建挂载配置文件目录nginx/conf与页面目录nginx/html,执行命令mkdir nginx/conf nginx/html。

-
快速启动一个
Nginx,端口随机映射。
-
然后从快速启动并运行中的
Nginx容器中复制配置文件到宿主机挂载配置文件目录下。


-
停止并删除步骤1快速启动的容器
Nginx。
-
修改步骤3复制出来的配置文件并在
html目录下新建测试页面。


-
保存以后我们开始正式启动
Nginx,命令如下。docker run -d -p 8011:80 \ --name nginx \ -v /install_ls/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /install_ls/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /install_ls/nginx/html:/usr/share/nginx/html \ nginx:1.22.0

-
访问宿主机IP+映射端口,
Nginx启动完成。
※ Nginx容器的启动需要注意挂载目录一定要匹配,另外需要注意的在相应的挂载目录变更后需要重启容器,如果是生产环境,建议将挂载目录进行定期冷备,我们这里并没有把Nginx的日志目录进行挂载,生产环境强烈建议对日志目录进行挂载,方便排查,与环节6挂载命令大同小异,需要的童鞋自行了解。
Docker安装并运行Tomcat
tomcat也是日常比较常使用的容器,虽然现在有了更好的web服务器比如undertow,哈哈~跑题了,我们继续tomcat,同nginx一致,tomcat也需要挂载目录,一般我们针对tomcat会挂载其日志目录与工作目录。
-
在挂载目录
/install_ls/tomcat下新建webapps与logs目录,执行命令mkdir -p /install_ls/tomcat/webapps /install_ls/tomcat/logs。

-
启动
tomcat容器。docker run -d -p 8111:8080 \ -v /install_ls/tomcat/logs:/usr/local/tomcat/logs \ -v /install_ls/tomcat/webapps:/usr/local/tomcat/webapps \ -e TZ="Asia/Shanghai" \ --name tomcat8 \ tomcat:8.0
-
这时访问
tomcat并不能访问成功,因为webapps下并没有相应war包,我这里从gitee找了一个简单示例下的war包丢入到挂载的webapps目录下,重启tomcat容器,访问webapps目录可以看到。
然后我们通过挂载的日志目录查看该项目运行日志,执行命令tail -f /install_ls/tomcat/logs/catalina.2023-02-01.log,可以看到。
-
访问宿主机IP+映射端口+web路径,
tomcat启动完成,项目正常运行。
※ tomcat启动方式推荐使用Dockerfile来启动,同Nginx一样需要格外注意挂载路径是否完全匹配,另外还需要注意catalina.*.log日志的大小,需要定期对该日志进行压缩,清除等事项。
☆ 参考文献:
无
◎ 文中所用到的资源链接:
【Nginx官网】
http://nginx.org/en/download.html
【Docker Hub Nginx】
https://hub.docker.com//nginx
【Docker Hub Tomcat】
https://hub.docker.com//tomcat


















