在Docker中使用一个Tomcat镜像运行多个容器可以部署多个webapp项目,设置不同的端口(互不影响),都是独立的服务.
1.首先在Docker中创建一个Tomcat的image.(参考其他Docker创建镜像)
[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 53f3fd8007f7 3 weeks ago 109 MB
<none> <none> e381830ca129 2 months ago 739 MB
<none> <none> ce9f7e0e02d7 2 months ago 739 MB
<none> <none> f1d4aa6b18ae 2 months ago 739 MB
docker.io/tomcat 8 dd6ff929584a 2 months ago 463 MB
docker.io/tomcat latest dd6ff929584a 2 months ago 463 MB
docker.io/redis latest ce25c7293564 5 months ago 95 MB
docker.io/centos/mysql-57-centos7 latest f171d281f17c 5 months ago 453 MB
docker.io/java 8 d23bdf5b1b1b 2 years ago 643 MB
docker.io/grange74/centos6-java6-tomcat6 latest 481203b6b87d 4 years ago 347 MB
docker.io/filemon/oracle_11g latest d03c4f0a4743 4 years ago 8.62 GB
2.然后根据创建的挂载目录/home/web/tomcat
在目录下创建 webapps
,conf
,logs
文件
[root@izbp1jdwfzdvn1q6ccy1xbz web]# cd /home/web/tomcat
[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# ls
conf logs webapps
3.创建多个容器
[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# docker run -d -p 8089:8080 -v /home/web/tomcat/webapps:/usr/local/tomcat/tomcat8/webapps -v /home/web/tomcat/conf:/usr/local/tomcat/tomcat8/conf -v/home/web/tomcat/logs:/usr/local/tomcat/tomcat8/logs --name caohai docker.io/tomcat
c0e4b45f3ebc9e64ef94ad2c03dd356887b7698d25b4070feb856e4238726c7c
[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0e4b45f3ebc docker.io/tomcat "catalina.sh run" 9 seconds ago Up 7 seconds 0.0.0.0:8089->8080/tcp caohai
4cef29fcf982 nginx "nginx -g 'daemon ..." 7 days ago Up 7 days 0.0.0.0:8082->80/tcp nginx-test-web
eb2d0d0b9909 docker.io/tomcat "catalina.sh run" 2 months ago Up 7 weeks 0.0.0.0:8086->8080/tcp birds
7b4ce9612b7f docker.io/grange74/centos6-java6-tomcat6 "/bin/sh -c 'exec ..." 4 months ago Up 41 hours 0.0.0.0:8080->8080/tcp zr_assets
91450d3abe53 filemon/oracle_11g "bash -c 'sed -i -..." 5 months ago Up 7 weeks 0.0.0.0:1521->1521/tcp, 0.0.0.0:10022->22/tcp oracle11g
745601b17b7b docker.io/redis "docker-entrypoint..." 5 months ago Up 7 weeks 0.0.0.0:6379->6379/tcp Redis
0767f3081034 docker.io/centos/mysql-57-centos7 "container-entrypo..." 5 months ago Up 7 weeks 0.0.0.0:3306->3306/tcp MySql57
说明
docker run -d -p 8089:8080 -v /home/web/tomcat/webapps:/usr/local/tomcat/tomcat8/webapps --name caohai docker.io/tomcat
1.-d -p 8089:8080
:后台运行,外端口8089映射内部端口8080
2.-v /home/web/tomcat/webapps:/usr/local/tomcat/tomcat8/webapps
:挂载本机的目录'/home/web/tomcat/webapps'到docker的'/usr/local/tomcat/tomcat8/webapps'的目录用于部署webapp
3.--name caohai
:创建的容器名称
4.docker.io/tomcat
:创建的Tomcat镜像
测试
在浏览器输入http://IP地址:8089
(会看到熟悉的猫)
image.png