Docker下Nginx+Tomcat部署项目+Mount目录挂载
参考内容:从零搭建K8S集群(无需科学上网)(一)实现Nginx+Tomcat负载均衡1、安装docker1.1 安装必要的依赖sudo yum install -y yum-utils device-mapper-persistent-datalvm21.2 设置docker仓库sudo yum-config-manager --add-repo http://mirrors.aliyun.co
1、安装docker
1.1 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 设置docker仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
`【需要设置一下阿里云镜像加速器】`
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["镜像加速器地址"]`(登录阿里云账号,搜索镜像加速器)`
}
EOF
sudo systemctl daemon-reload
镜像加速器
的设置参考:从零搭建K8S集群(无需科学上网)(一)文中第2节
1.3 安装docker
yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
1.4 启动docker
sudo systemctl start docker && sudo systemctl enable docker
2、安装Tomcat
2.1 查找Docker Hub上的tomcat镜像
- 1)
sudo docker search tomcat
[devuser@henry ~]$ sudo docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 2814 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 80 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 55 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 35 [OK]
kubeguide/tomcat-app Tomcat image for Chapter 1 29
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 17 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 13 [OK]
.........................
从查询的镜像中拉取自己需要的版本。
-
- 也可以到官网查找合适的版本:
https://hub.docker.com/_/tomcat
2.2 拉取官方的镜像
docker pull tomcat
我选择的版本是8.5.56
版本,默认下载的是最新版本
[devuser@henry ~]$ sudo docker pull tomcat:8.5.56
[devuser@henry ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.5.56 e010d327a904 2 months ago 529MB
2.3 运行容器
- 1)、创建挂载目录:
设置挂载目录
:意思把宿主机的一个文件夹映射到容器的webapps目录,直接把war包上传到宿主机的文件夹,不用再复制到tomcat容器里面了,tomcat容器的webapps目录会直接使用这个文件夹下的文件。
设置容器别名
:之前不设置别名,操作关闭容器,或进入容器内我们都要找到此容器ID,并根据此容器ID来操作,很不方便。–name xxx之后我们可以直接操作xxx别名
设置开机自启
:–restart=always参数不用多说,意思就是开机自启
- 2)启动容器执行脚本
docker run -d -p 8080:8080 --name mytomcat
-v /home/data/mounts/mytomcat/webapps:/usr/local/tomcat/webapps
-v /home/data/mounts/mytomcat/logs:/usr/local/tomcat/logs
-v /etc/localtime:/etc/localtime:ro
--restart=always tomcat:8.5.56
脚本解释:
-d
:后台运行;
-P
:随机端口映射;
-p
:指定端口映射; 格式:宿主机端口:容器端口
-v
:文件挂载
此外,设置-v /etc/localtime:/etc/localtime:ro
挂载的目的是为了保证容器和宿主机的时间一致。
- 3)查看容器运行情况
[devuser@henry mytomcat]$ sudo docker run -d -p 8080:8080 --name mytomcat
-v /home/data/mounts/mytomcat/webapps:/usr/local/tomcat/webapps
-v /home/data/mounts/mytomcat/logs:/usr/local/tomcat/logs
-v /etc/localtime:/etc/localtime:ro
--restart=always tomcat:8.5.56
e010d327a904
a52e84b8d57e6b9893347baa4758a7ef4c2f529a0341e06305518950c066609d
`容器运行情况`
[devuser@henry mytomcat]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a52e84b8d57e e010d327a904 "catalina.sh run" 10 seconds ago Up 9 seconds 0.0.0.0:8080->8080/tcp mytomcat
`查看容器的详情(网络、镜像、挂载情况等)`
[devuser@henry mytomcat]$ sudo docker inspect mytomcat
`查看容器的日志`
[devuser@henry mytomcat]$ sudo docker logs mytomcat
2.4 访问容器
用ip:port即可对Tomcat进行访问;
此时注意上方的port为容器映射到宿主机上的port端口。
3 Nginx安装
docker安装Nginx方法同Tomcat安装类似;
1)拉取镜像
[devuser@henry ~]$ sudo docker pull nginx
[devuser@henry ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4bb46517cac3 11 days ago 133MB
tomcat 8.5.56 e010d327a904 2 months ago 529MB
- 2)创建挂载目录
[devuser@henry nginx]$ mkdir -p /home/data/mounts/nginx/{www,logs,conf}
其中:
www
: 目录将映射为 nginx 容器配置的虚拟目录。
logs
: 目录将映射为 nginx 容器的日志目录。
conf
: 目录里的配置文件将映射为 nginx 容器的配置文件。
- 3)运行docker容器
docker run -d -p 80:80 --name nginx_test
-v /home/nginx/www:/usr/share/nginx/html
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /home/nginx/logs:/var/log/nginx
-v /etc/localtime:/etc/localtime:ro
--restart=always
nginx
命令说明:
--rm
:容器终止运行后,自动删除容器文件。
-p 80:80
: 将容器的 80 端口映射到主机的 80 端口.
--name nginx_test
:将容器命名为 nginx_test
-v /home/nginx/www:/usr/share/nginx/html
:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
-v /home/nginx/logs:/var/log/nginx
:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。
- 3)查看容器运行情况:
[devuser@henry nginx]$ sudo docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
32e98fa073cf tomcat:8.5.56 "catalina.sh run" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp mytomcat
5da8416158a5 nginx "/docker-entrypoint.…" 3 days ago Up 3 days 0.0.0.0:80->80/tcp nginx_test
对于使用Nginx对Tomcat进行负载均衡的转发,可参考文章:实现Nginx+Tomcat负载均衡
总结
通过docker我们可以很快的启动一个Tomcat容器,通过目录的挂载,可以不用进入到容器里面进行操作,直接将打好的war包放入到指定目录下就可以了。
更多推荐
所有评论(0)