1.多次杀死容器或镜像或重启过docker可能会报的错
[root@test mydocker]# docker run -it -p 7779:8080 tomcat
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.
(exit status 1)).
docker服务启动时定义的自定义链docker由于某种原因被清掉
重启docker服务及可重新生成自定义链docker
重启docker服务后再启动容器
systemctl restart docker
2.现在进入正在运行的tomcat容器没有容器号提示了不知道为什么
[root@test mydocker]# docker exec -it 718b84629321 /bin/sh
# 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
# mv webapps web
# mv webapps.dist webapps
#
但就这样修改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有容器号看起来舒服。