1.拉取tomcat镜像
1.docker search tomcat
2.docker pull tomcat
2.运行tomcat镜像
docker run -d -p 8080:8080 --name mytomcat
-e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom" # 加快访问速度
-v /etc/localtime:/etc/localtime:ro # 解决docker容器与宿主机时间不一致问题
-v /home/docker/tomcat/conf:/usr/local/tomcat/conf # conf
-v /home/docker/tomcat/logs:/usr/local/tomcat/logs # logs
-v /home/docker/tomcat/webapps:/usr/local/tomcat/webapps # webapps
--privileged=true # 开启最高权限
--restart=always # 自启动
tomcat
以上命令是做一个详解,实际根据需求组合,例如:
docker run -d -p 8080:8080 \
-e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom" \
-v /home/docker/tomcat/webapps:/usr/local/tomcat/webapps \
--name mytomcat \
tomcat
或者:
docker run -d -p 8081:8080 \
-e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom" \
-v /home/docker/tomcat/webapps:/usr/local/tomcat/webapps \
-v /home/docker/tomcat/conf:/usr/local/tomcat/conf \
-v /home/docker/tomcat/logs:/usr/local/tomcat/logs \
--name mytomcat2 tomcat
3.配置部署项目
》复制容器中的数据或文件:
比如tomcat的配置文件就可以使用如下复制到挂载目录,以后修改就直接在挂载目录修改了
docker cp /home/docker/tomcat/test.war 197b1c1904a1:/usr/local/tomcat/webapps
》进入容器:
docker exec -it <container_name> /bin/bash
》解决docker容器与宿主机时间不一致问题:
在启动容器时,把系统时间挂载到容器内,添加如下参数
-v /etc/localtime:/etc/localtime:ro // ro表示只读
》解决docker 容器与tomcat 应用打印日志时间不一致问题:
在tomcat/bin/catalina.sh文件中修改tomcat JAVA_OPTS,添加如下内容
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
在启动容器时,把系统时间挂载到容器内,如下两种方式:
-e JAVA_OPTS="-Duser.timezone=Asia/Shanghai"
-e TZ="Asia/Shanghai" 设置时区
》最后要注意宿主机端口问题,确保端口正常。切记docker在运行,改变防火墙状态,需要重启docker服务,否则出错。
注:
- \ + 回车 :命令行多行输入
- ctrl+u :删除命令行开始至光标处
- ctrl+k :删除光标处至命令行结尾
- ctrl+a :光标移动到最前面
- ctrl+e :光标移动到最后面