部署Tomcat

1.搜索tomcat镜像

  1. docker search tomcat

2.拉取tomcat镜像

  1. docker pull tomcat

3.创建容器,设置端口映射、目录映射

  1. mkdir ~/tomcat
  2. cd ~/tomcat
  3. docker run -id --name=lin_tomcat \
  4. -p 8081:8080 \
  5. -v /root/tomcat:/user/local/tomcat/webapps \
  6. my_tomcat:2.0

参数说明: -p 8081:8080 \ 将容器8080映射到主机8081端口 -v $PWD:/user/local/tomcat/webapps \ 将主机当前目录挂载到容器的webapps

2020更新后

创建linux宿主机文件夹用于存储tomcat容器中复制出来的配置文件。

  1. docker run -d -p 8888:8080 --name test_tomcat tomcat

命令 docker exec -it 容器名字(或容器container id) bash此处推荐用容器名字(如上面命名的容器名字test_tomcat)方便书写。默认进入容器的 /usr/local/tomcat文件夹,这里注意几个文件夹后面会用到,一个是conf,一个是webapps。我们进入conf,然后查看里面有哪些文件,注意tomcat-users.xml是我们要复制的。
image.png
exit退出容器,并复制tomcat容器配置文件(tomcat-users.xml)和整个webapps.dist文件夹到linux宿主机。用语句 docker cp 容器配置文件路径 linux宿主机存储路径。
image.png

  1. docker cp test_tomcat:/usr/local/tomcat/conf/tomcat-users.xml tomcat-users.xml
  2. docker cp test_tomcat:/usr/local/tomcat/webapps.dist webapps

停止正在运行的tomcat容器,并删除该容器test_tomcat。

修改复制出来的文件。tomcat-users.xml配置权限,/webapps/manager/META-INF/context.xml 配置访问地址和端口等。

编辑tomcat-usrs.xml,底部</tomcat-users>以内添加如下内容,其中授权访问账号为:tomcat,密码为:tomcat.2019

  1. <role rolename="manager-gui" />
  2. <role rolename="manager-script" />
  3. <role rolename="manager-status" />
  4. <role rolename="manager-jmx" />
  5. <user username="tomcat" password="tomcat.2019" roles="manager-gui,manager-script,manager-status,manager-jmx" />

image.png
切进/webapps/manager/META-INF文件夹,编辑里面的context.xml文件,将以下内容注释掉

<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

重新运行一个tomcat容器,并挂载本地的配置文件到容器对应文件。

docker run -dit --name my_tomcat_2020 -p 8081:8080 --restart=always -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /root/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml -v /root/tomcat/webapps:/usr/local/tomcat/webapps docker.io/tomcat

参数解析:

-d           后台运行容器,并返回容器ID;
--name       为容器起一个容易区分且容易书写的名字
-p           映射宿主机端口到容器端口,宿主机端口:容器端口
--restart=always  机器重启时自动启动容器
-e       设定一些必须的环境变量。本例子中 -e TZ="Asia/Shanghai" 设定时区为上海,强烈建议国内设定,否则容器内打印的所有日志时间都会差8小时。
-v       挂载宿主机文件到容器。本例三个分别为:
          -v /etc/localtime:/etc/localtime:ro 挂载宿主机时间,保持容器时间正确。
          -v /root/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml 挂载宿主机配置文件到容器。
          -v /root/tomcat/webapps:/usr/local/tomcat/webapps 挂载宿主机/webapps到容器。

https://www.cnblogs.com/jying/p/12176107.html