目录
一、安装docker
二、拉取tomcat 镜像
三、启动运行tomcat 镜像
1、设置自动启动容器
2、进入容器
3、时区问题
四、部署项目
一、安装docker
yum install docker
1、设置docker 自动启动
sudo systemctl enable docker
2、启动docker
sudo systemctl start docker
二、拉取tomcat 镜像
docker pull tomcat:8.5.40
1.查看已拉取的镜像
docker images
2.删除已拉取的镜像
docker rmi xxx
三、启动运行tomcat 镜像
docker run -d --name tomcat8 -p 80:8080 tomcat:8.5.40
参数 | 解释 |
-d | 后台运行容器,并返回容器ID; |
-i | 以交互模式运行容器,通常与 -t 同时使用; |
-a stdin | 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 |
-p | 端口映射,格式为:主机(宿主)端口:容器端口 |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用; |
--name="nginx-lb" | 为容器指定一个名称; |
--dns 8.8.8.8 | 指定容器使用的DNS服务器,默认和宿主一致; |
--dns-search example.com | 指定容器DNS搜索域名,默认和宿主一致 |
-h "mars" | 指定容器的hostname; |
-e username="ritchie" | 设置环境变量 |
--env-file=[]: | 从指定文件读入环境变量; |
--cpuset="0-2" or --cpuset="0,1,2" | 绑定容器到指定CPU运行 |
-m | 设置容器使用内存最大值 |
-net="bridge" | 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型 |
--link=[] | 添加链接到另一个容器 |
--expose=[] | 开放一个端口或一组端口 |
1、设置自动启动容器
docker update --restart=always tomcat8
2、进入容器
docker exec -it tomcat8 /bin/bash
1.退出容器
exit
2.查看所有容器
docker ps -a
3.删除容器
docker rm xxxx(容器名或容器id都可以)
3、时区问题
(1)执行date 命令查看时间,会发现容器中的时间少了8个小时,这是由于时区不一致.执行以下命令,已修改时间
cd /etc/
mv localtime localtime_bak
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(2)更改完时区后,发现java 程序中的时间还是没有改变
是因为docker中的java应用获取时间是从 timezone中获取,因此进入docker,修改timezone
echo "Asia/Shanghai" > /etc/timezone
执行完这条语句,会发现docker 中java程序的时间也就一致了.
四、部署项目
把war包部署到tocmat 上,进入容器可知 webapps 在/usr/local/tomcat/webapps/
则在宿主机器上执行
docker cp xxx.war tomcat8:/usr/local/tomcat/webapps/
就成功部署了.
五、tomcat 日志
我看了一下tomcat 日志,并没有生产catlina.out 这个日志文件,看了 dockerfile 文件后,得知这个tomcat 他是用 catlina.sh run 命令执行的.
在网上找了好多,目前还没有研究出怎么更改其他启动方式.目前我是先进入bin目录停止掉tomcat ,再以 sh startup.sh 执行,就有日志文件生成了.