说明:Docker安装详见《docker的安装与更换yum源》教程
一、拉取官方tomcat
1.1 查看docker镜像
docker search tomcat
1.2 拉取tomcat镜像
1.2.1默认拉取最新版
docker pull tomcat
1.2.2 拉取官方特定版本
docker pull tomcat:[tag]
1.2.3 拉取个人特定版本(阿里仓库)
- 登录阿里云Docker Registry
sudo docker login --username=白衣卿相2744 registry.cn-shanghai.aliyuncs.com
用于登录的用户名为阿里云账号全名
密码为开通服务时设置的密码(点击查看)
您也可以在访问凭证页面修改凭证密码。
- 从Registry中拉取镜像
sudo docker pull registry.cn-shanghai.aliyuncs.com/dockerbin/tomcat:[镜像版本号]
二、启动tomcat
2.1 创建挂载目录
mkdir /usr/local/docker/tomcat
2.2 复制挂载文件
2.2.1 全部挂载
- 先启动用于复制文件的docker_tomcat 容器
docker run -d -p 80:80 --name tomcattest --restart=always registry.cn-shanghai.aliyuncs.com/dockerbin/tomcat:80.1
- 查看容器
docker ps
- 复制容器中的文件到宿主机
docker cp [ID]:/usr/local/tomcat /usr/local/docker/
2.2.2 部分挂载
- 先启动用于复制文件的docker_tomcat 容器
docker run -d -p 80:80 --name tomcattest --restart=always registry.cn-shanghai.aliyuncs.com/dockerbin/tomcat:80.1
- 查看容器
docker ps
- 复制容器中的文件到宿主机
docker cp [ID]:/usr/local/tomcat/conf /usr/local/docker/tomcat/
docker cp [ID]:/usr/local/tomcat/logs /usr/local/docker/tomcat/
docker cp [ID]:/usr/local/tomcat/webapps /usr/local/docker/tomcat/
2.3 启动容器
- 主机模式,挂载整个tomcat
官方镜像
docker run -d --network=host --hostname=localhost --name=tomcat8.5.57 --restart=always -v /usr/local/docker/tomcat:/usr/local/tomcat -v /etc/localtime:/etc/localtime tomcat:8.5.57
docker run -d \
-v /usr/local/docker/tomcat:/usr/local/tomcat \
--network=host \
--restart=always \
--name tomcat \
registry.cn-shanghai.aliyuncs.com/dockerbin/tomcat:80.1
- 桥接模式,挂载整个tomcat
docker run \
-d -p 80:80 \
-v /usr/local/docker/tomcat:/usr/local/tomcat \
--network=host \
--name tomcat \
--restart=always \
registry.cn-shanghai.aliyuncs.com/dockerbin/tomcat:80.1
- 桥接模式,挂载部分目录
docker run \
-d -p 80:80 \
-v /usr/local/docker/tomcat/logs/:/usr/local/tomcat/logs/ \
-v /usr/local/docker/tomcat/conf/:/usr/local/tomcat/conf/ \
-v /usr/local/docker/tomcat/webapps/:/usr/local/tomcat/webapps/ \
--name tomcat \
--restart=always \
registry.cn-shanghai.aliyuncs.com/dockerbin/tomcat:80.1
三、验证tomcat
- 查看tomcat页面(下图为部署成功)
- 验证挂载的文件(下图为文件生效)
四、查看日志
docker logs -f -t --since="2020-02-29" --tail=100 [ID]
五、Tomcat 配置
5.1 tomcat 调优
5.1.1 java bin 中优化(此步骤在docker中已经进行优化)
5.1.2 server 文件优化
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="400"
minSpareThreads="50"
maxSpareThreads="200"
acceptCount="400"
enableLookups="false"
disableUploadTimeout="true"
/>
5.1.3 JVM 优化
此处在$tomcat_home/bin中,新增setenv.sh并授予权限
注:此处配置需放在一行
JAVA_OPTS="-server -Xms10240m -Xmx10240m -Xmn2048m -XX:MetaspaceSize=2048M -XX:MaxMetaspaceSize=2048M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/appl/gc.log -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"
JAVA_OPTS="-server \
-Xms10240m -Xmx10240m -Xmn2048m \
-XX:MetaspaceSize=2048M \
-XX:MaxMetaspaceSize=2048M \
-XX:+UseConcMarkSweepGC \
-XX:+CMSClassUnloadingEnabled \
-XX:+HeapDumpOnOutOfMemoryError \
-verbose:gc \
-XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps \
-XX:+PrintGCDateStamps \
-Xloggc:/appl/gc.log \
-XX:CMSInitiatingOccupancyFraction=75 \
-XX:+UseCMSInitiatingOccupancyOnly \
-Djava.awt.headless=true"
5.1.4 docker 时间调整
docker exec -it tomcat8.5.57 /bin/bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone