1. 添加端口映射
a, 获取容器ip
docker inspect $container_name | grep IPAddress
b. 添加转发规则
iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $docker_ip:$docker_port
2. 删除端口映射
a. 获取规则编号
iptables -t nat -nL --line-number
b. 根据编号删除规则
iptables -t nat -D DOCKER $num
备注:此处“DOCKER"可以替换为table中对应的字段名称。
如果清除映射表,重新创建容器时仍然提示错误,则需要重启一下docker服务。
docker 容器非正常关闭/或者无法正常stop 、kill,本人遇到的情况是容器中存在了僵尸进程,可以尝试将这些进程kill掉之后再关闭容器/删除。关闭僵尸进程的方法,可以在宿主机上直接kill掉对应的进程。
这样非正常方式删除的容器,会在端口映射表(iptables)中存在残留,特别是你新启动的容器IP,端口与原来的一致,这样创建新的容器就不能成功。
需要按照上面的删除端口映射的方式,清楚一下映射。
再重新创建容器,OK。