centos7安装docker创建tomcat并部署web项目

注:卸载:

  1、查询docker安装过的包:

  #yum list installed | grep docker

      

 

       2、删除安装包:

  #yum remove docker-ce.x86_64 docker-ce-cli.x86_64

  3、删除镜像/容器等

       删除容器

      #docker rm dockerName

      删除镜像,不可删除正在使用的镜像,可加 f进行强删

     #docker rmi iamgeName

     #docker rmi -rf iamgeName

一、安装 Docker

1. 检查操作系统内核版本

检查操作系统内核版本,必须是3.10及以上。

# uname -r

3.10.0-862.9.1.el7.x86_64

2. 安装 Docker

使用 yum 命令安装 Docker。

# yum install docker

Resolving Dependencies

... ...

Complete!

3. 启动 Docker

# systemctl start docker

4. 查看 Docker 版本

# docker -v

Docker version 1.13.1, build b2f74b2/1.13.1

5. 设置开机自启动 Docker

# systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

二、安装 Tomcat 并部署WAR工程

1. 看 Docker 支持哪些版本的 Tomcat

打开 https://hub.docker.com/r/library/tomcat/ 查看 Docker 都支持哪些版本的Tocmat。

2. 在 Docker 里安装 Tomcat

在 Docker 里安装 Tomcat,拉取 Tomcat 镜像,不指定版本就是默认安装最新版,这里安装 8.5.35 版的。

# docker pull tomcat:8.5.35

安装报错解决办法:

(1)、安装dig工具:【yum install bind-utils

(2)、查找可用映射:【dig @114.114.114.114 registry-1.docker.io

;; ANSWER SECTION:

registry-1.docker.io. 48 IN A 52.87.94.70

registry-1.docker.io. 48 IN A 54.165.149.19

(3)、添加映射:【vim /etc/hosts

54.165.149.19 registry-1.docker.io

3. 查看本地镜像

# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.35              48dd385504b1        6 months ago        475 MB

4. 通过镜像新建一个 Tomcat 容器并启动

注意,命令后面的 48dd385504b1是前面拉取的 Tomcat 镜像ID!实践证明,如果用镜像名而不用镜像ID,那么就会自动拉取最新版的镜像使用,而不是刚才手动拉取的 8.5.35 版本的镜像。

# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -d -p 8080:8080  48dd385504b1

Unable to find image 'tomcat:latest' locally

Trying to pull repository docker.io/library/tomcat ... 

latest: Pulling from docker.io/library/tomcat

Digest: sha256:1b18333c03f68a64eb5dcc246984e89cf2d6737b04d95aa34cd337d8abfe796e

Status: Downloaded newer image for docker.io/tomcat:latest

e3274a72e8d62a0f3022d3201405ce586147b3031c1232452d001ee41fb9c938

 

其中 “-v /etc/localtime:/etc/localtime:ro” 表示让容器使用宿主机的时间时区。

-v 标签为容器添加 volume,后面的 :ro 指定该 volume 为只读。

注意:如果容器中指定的挂载目录存在相同的文件时,会被宿主机覆盖掉。

 

如果想把 Tomcat 的 webapps 目录也挂载到宿主机目录(比如挂载到 /data/webapps),那么就是下面这样,需要再写个 -v 选项:(宿主机目录:容器目录

# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -v /data/webapps:/usr/local/tomcat/webapps:rw -d -p 8080:8080 48dd385504b1

这时查看宿主机目录(/data/webapps)是空的,进入容器查看 webapps 目录也是空的,放一个 WAR 包应用到宿主机目录(/data/webapps)下,一会 WAR 包解压生成一个同名的文件夹,说明挂载 webapps 目录成功。

查看容器:

# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
a70c28d11a0c        48dd385504b1        "catalina.sh run"   2 days ago          Up 3 hours          0.0.0.0:8080->8080/tcp   tomcat8080

查看宿主机时间:

# date

Fri Jun 14 17:12:43 CST 2019

进入容器查看时间:

# docker  exec -it  tomcat8080   /bin/bash

root@a70c28d11a0c:/usr/local/tomcat# date

Fri Jun 14 17:14:50 CST 2019

与宿主机的时间一致。

但是 Tomcat 使用的时区还需要单独设置一下,否则部署在 Tomcat 里的工程取到的时间可能不是 Docker 容器的时间。设置很简单,只需在 bin 目录下的 catalina.sh 文件里加上时区即可,如下。

进入容器:

# docker  exec -it  tomcat8080   /bin/bash

进入 bin 目录:

root@a70c28d11a0c:/usr/local/tomcat# cd bin/

root@a70c28d11a0c:/usr/local/tomcat# ls

catalina.sh      ......

把文件 catalina.sh 备份一下,然后修改文件

 

因为在容器内不能修改文件,那就把容器文件拷贝到宿主机修改,修改后再拷贝到容器覆盖原文件。

退出容器(Ctrl+d),把 Tomcat 容器 bin 目录下的 catalina.sh 拷贝到宿主机:

在宿主机执行:(把容器文件拷贝到宿主机中备份)

docker cp 容器名:文件在容器中的路径 要备份的路径 (我是备份到data目录下)

# docker cp tomcat8080:/usr/local/tomcat/bin/catalina.sh /data/

在宿主机里编辑 catalina.sh 文件:

打开文件,找到 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS",修改为 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Duser.timezone=Asia/Shanghai"

保存文件,然后再拷贝到容器内:(把宿主机文件拷贝到容器中)

docker cp 在备份的路径 容器名:文件在容器中的路径

# docker cp /data/catalina.sh tomcat8080:/usr/local/tomcat/bin/

这样就覆盖了容器的原文件,然后重启 Tomcat 或重启容器。

5. 查看运行的 Tomcat 容器

# docker ps (正在运行的容器)

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
a70c28d11a0c        48dd385504b1        "catalina.sh run"   2 days ago          Up 6 hours          0.0.0.0:8080->8080/tcp   tomcat8080

# docker ps -a(所有的容器)

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
a70c28d11a0c        48dd385504b1        "catalina.sh run"   2 days ago          Up 6 hours          0.0.0.0:8080->8080/tcp   tomcat8080

启动一个已存在的容器的命令,a70是“容器ID” 

# docker start a70 

再看容器已经启动了:

# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
a70c28d11a0c        48dd385504b1        "catalina.sh run"   2 days ago          Up 6 hours          0.0.0.0:8080->8080/tcp   tomcat8080

6. 试试用浏览器打开 Tomcat 界面

如果docker 镜像启动成功但是无法访问,看一下博客第二个解决办法

https://blog.csdn.net/weixin_43052839/article/details/91989394

这时在浏览器输入 IP:8080 就可访问默认的 Tomcat 界面了。

7. 部署Web应用(WAR工程)

获取容器的长ID(tomcat8080 是容器名):

# docker inspect -f '{{.Id}}' tomcat8080

a70c28d11a0c440339d383a3dc4bd258cf98a9c72826d929b68e7edce25ce813

进入容器(a70是容器ID的前三位数,当然也可以多写几位,只要 Docker 能唯一识别容器即可):

# docker  exec -it  a70   /bin/bash

执行后直接进入容器,命令提示符由系统的转为容器的了,root@ 后面的“9653b878cac6”是容器ID(短ID),冒号后面的“/usr/local/tomcat”是容器目录,这个目录是 Docker 内的目录不是系统目录。如下:

root@a70c28d11a0c:/usr/local/tomcat# pwd

root@9653b878cac6:/usr/local/tomcat# ls

BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work

顺便删除 Tomcat 的 webapps 目录下的所有内容:

root@a70c28d11a0c:/usr/local/tomcat# cd webapps/

root@a70c28d11a0c:/usr/local/tomcat/webapps# ls

ROOT  docs  examples  host-manager  manager

root@a70c28d11a0c:/usr/local/tomcat/webapps# rm -fr *

root@a70c28d11a0c:/usr/local/tomcat/webapps# ls

退出容器用 exit 命令/ctrl+d:

root@a70c28d11a0c:/usr/local/tomcat/webapps# exit

直接回到了系统,命令提示符由容器的转为系统的了:

开始部署Web应用,很简单就是拷贝web包文件到容器中。

将要部署的web包拷贝到 Tomcat 容器的 webapps 目录下:(我web项目还是放在了宿主data目录下)

# docker cp 本地文件 容器ID:容器路径

# docker cp /data/ROOT.zip a70:/usr/local/tomcat/webapps/

进入容器看到了拷贝的web包文件:

# docker  exec -it  a70 /bin/bash

root@9653b878cac6:/usr/local/tomcat# ls

BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work

root@a70c28d11a0c:/usr/local/tomcat# cd webapps/

root@a70c28d11a0c:/usr/local/tomcat/webapps# ls

解压zip解压包

root@a70c28d11a0c:/usr/local/tomcat/webapps# unzip ROOT.zip

如果是tar包

root@a70c28d11a0c:/usr/local/tomcat/webapps# tar -zxvf ROOT.zip

8. 用浏览器访问部署的Web应用

打开浏览器输入 IP:8080就打开了

查看日志

#docker logs 容器名

#docker logs tomcat8080

关于docker 基于一个tomcat镜像来部署多个tomcat容器并运行

https://blog.csdn.net/weixin_43052839/article/details/91990860

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值