1.多次杀死容器或镜像或重启过docker可能会报的错

  1. [root@test mydocker]# docker run -it -p 7779:8080 tomcat
  2. docker: Error response from daemon: driver failed programming external connectivity on endpoint admiring_ptolemy (dc9db6eeec252b4472892da1ef0a07a45076f23c3ec93c6ef2265c9ad35678b6): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 7779 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.
  3. (exit status 1)).

docker服务启动时定义的自定义链docker由于某种原因被清掉
重启docker服务及可重新生成自定义链docker

重启docker服务后再启动容器
systemctl restart docker

2.现在进入正在运行的tomcat容器没有容器号提示了不知道为什么

  1. [root@test mydocker]# docker exec -it 718b84629321 /bin/sh
  2. # ls
  3. BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
  4. # mv webapps web
  5. # mv webapps.dist webapps
  6. #

但就这样修改webapps文件,通过对应的端口也能访问 web页面

重启了虚拟机以后再次启动tomcat容器,还是不显示容器编号。

3.发现为什么不显示容器号:

因为我进入的是 bin/sh

如果进入bin/bash就会显示容器号,

centos和tomcat都是这样的,只要 docker exec -it 容器号 + bin/sh 就会显示 sh的内容

[root@test ~]# docker exec -it bdea594fd362 /bin/sh
sh-4.4# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr

但进入sh和bash都可以编辑文件夹中的内容。还是进入bash有容器号看起来舒服。