修改宿主机防火墙之后 容器start不了

  1. [root@localhost ctf_sql]# docker start 40dc37973c16
  2. Error response from daemon: driver failed programming external connectivity on endpoint quizzical_dubinsky (a607354ff13226bf251bf805f21f5e75de390741e9be7009656e659a71215417): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 13443 -j DNAT --to-destination 172.17.0.2:3443 ! -i docker0: iptables: No chain/target/match by that name.
  3. (exit status 1))

解决方法:

重启docker,重启docker之前务必记录其他容器状态,防止重启docker对其他容器产生影响。

  1. systemctl restart docker

Docker映射端口时仅有IPv6无法到IPv4解决方法

https://juejin.cn/post/6844903953793024014
使用阿里云源安装Docker后,使用docker-compose简单编排容器并启动容器,发现所有容器映射到宿主机端口均在IPv6上而IPv4上什么都没有。
在服务器上禁用IPv6
使用vim打开/etc/default/grub在第6行中增加ipv6.disable=1例如:

  1. GRUB_CMDLINE_LINUX="ipv6.disable=1"

重新配置grub并重启服务器

$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ reboot

等到服务器重启完成后,我们再次使用netstat查看tcp协议(也可以使用lsof -n -i TCP | grep docker),结果如下
image.png

docker rmi 命令删除镜像报错

报错内容

Error response from daemon: conflict: unable to delete e0958635a01f (must be forced) - image is referenced in multiple repositories
在两个镜像的 id 一样时,使用 docker rmi 命令删除镜像报错
image.png
在两个镜像的 ID 一样时,需要制定镜像名加标签的方式删除,而不是用 ID 删除
image.png