目录

一、安装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 执行,就有日志文件生成了.