Docker 安装 tomcat

# 官方的使用
docker run -it --rm tomcat:9.0    # run启动命令会自动去pull镜像

# 我们之前的启动都是后台,停止了容器之后,容器还是可以查到,docker run -it --rm 一般用来测试,用完即删。

# 退出后tomcat并不存在
[root@qiaoyanjie ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED       STATUS       PORTS                  NAMES
089bc40ab204   nginx     "/docker-entrypoint.…"   3 hours ago   Up 3 hours   0.0.0.0:3344->80/tcp   nginx01
a30438b045f1   centos    "/bin/bash -c 'while…"   6 days ago    Up 6 days                           amazing_buck
82cc433f5fd8   centos    "/bin/bash"              6 days ago    Up 6 days                           vigilant_ptolemy

# 1、拉取镜像
[root@qiaoyanjie ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
bb7d5a84853b: Already exists 
f02b617c6a8c: Already exists 
d32e17419b7e: Already exists 
c9d2d81226a4: Already exists 
fab4960f9cd2: Already exists 
da1c1e7baf6d: Already exists 
1d2ade66c57e: Already exists 
ea2ad3f7cb7c: Already exists 
d75cb8d0a5ae: Pull complete 
76c37a4fffe6: Pull complete 
Digest: sha256:509cf786b26a8bd43e58a90beba60bdfd6927d2ce9c7902cfa675d3ea9f4c631
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest

# 2、启动镜像
[root@qiaoyanjie ~]# docker run -d --name tomcat01 -p 3345:8080 tomcat
6829c4af6b7e5a234ead828de7fbeecb2852bf9a0e7ad60d2340b49368a93769

# 3、阿里云开通安全组

 测试访问没问题,但显示不出tomcat页面

[root@qiaoyanjie ~]# docker exec -it 6829c4af6b7e bin/bash    # bin前要加/
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "bin/bash": stat bin/bash: no such file or directory: unknown
[root@qiaoyanjie ~]# docker exec -it 6829c4af6b7e /bin/bash    # /bin/bash(sh);bash(sh);容器id可以改为容器名字tomcat01
root@6829c4af6b7e:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@6829c4af6b7e:/usr/local/tomcat# cd webapps
root@6829c4af6b7e:/usr/local/tomcat/webapps# ls    # webapps没有东西
root@6829c4af6b7e:/usr/local/tomcat/webapps# cd ../webapps.dist/
root@6829c4af6b7e:/usr/local/tomcat/webapps.dist# ls    # 文件都在webapps.dist下
ROOT  docs  examples  host-manager  manager    
root@6829c4af6b7e:/usr/local/tomcat/webapps.dist# cd ..
root@6829c4af6b7e:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@6829c4af6b7e:/usr/local/tomcat# cp -r webapps.dist/* webapps    # 将webapps.dist文件夹里面的东西拷贝到webapps中
root@6829c4af6b7e:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@6829c4af6b7e:/usr/local/tomcat# cd webapps
root@6829c4af6b7e:/usr/local/tomcat/webapps# ls    # 存在文件
ROOT  docs  examples  host-manager  manager

 现在tomcat页面显示成功

 

在启动Docker的容器时,会出现报错:Error response from daemon: driver failed programming external connectivity on endpoint XXX(端口映射或启动容器时报错)

原因:在我们启动了Docker后,我们再对防火墙firewalld进行操作,就会发生上述报错。

详细原因:docker服务启动时定义的自定义链DOCKER,当 centos7 firewall 被清掉时,firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。当你使用的是 Systemd 的时候, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后操作 firewalld ,你就需要重启 Docker 进程了。

[root@qiaoyanjie ~]# docker run -d --name tomcat01 -p 3345:8080 tomcat
7281f02daced48116a614a3f16fbd1941ff777d9bee7276f6981c05ee6cf6747
docker: Error response from daemon: driver failed programming external connectivity on endpoint tomcat01 (61aa99d8c561b24488563dd3559ee0ff9120c009a2bca65613e9ee1616abdce9):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3345 -j DNAT --to-destination 172.17.0.3:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).
[root@qiaoyanjie ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS      PORTS                  NAMES
7281f02daced   tomcat    "catalina.sh run"        27 seconds ago   Created                            tomcat01
10987a6f0593   nginx     "/docker-entrypoint.…"   6 days ago       Up 6 days   0.0.0.0:3344->80/tcp   nginx01
[root@qiaoyanjie ~]# docker rm -f 7281f02daced
7281f02daced
[root@qiaoyanjie ~]# systemctl restart docker
[root@qiaoyanjie ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-05-05 18:11:28 CST; 23s ago
     Docs: https://docs.docker.com
 Main PID: 24236 (dockerd)
    Tasks: 7
   Memory: 28.1M
   CGroup: /system.slice/docker.service
           └─24236 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.738667921+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/cont... module=grpc
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.738678443+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.743323296+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.767747061+08:00" level=info msg="Loading containers: start."
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.911099711+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. ... IP address"
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.958667042+08:00" level=info msg="Loading containers: done."
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.983339434+08:00" level=info msg="Docker daemon" commit=87a90dc graphdriver(s)=overlay2 version=20.10.14
May 05 18:11:28 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:28.983407604+08:00" level=info msg="Daemon has completed initialization"
May 05 18:11:28 qiaoyanjie systemd[1]: Started Docker Application Container Engine.
May 05 18:11:29 qiaoyanjie dockerd[24236]: time="2022-05-05T18:11:29.004802106+08:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.
[root@qiaoyanjie ~]# docker run -d --name tomcat01 -p 3345:8080 tomcat
21d3be4a9e4c57abe45de90d0cdfc8e14760bea28f4e27e20d075f09672568cb
[root@qiaoyanjie ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                          PORTS                    NAMES
21d3be4a9e4c   tomcat    "catalina.sh run"        46 seconds ago   Up 45 seconds                   0.0.0.0:3345->8080/tcp   tomcat01
10987a6f0593   nginx     "/docker-entrypoint.…"   6 days ago       Exited (0) About a minute ago                            nginx01

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值