docker端口映射失败解决方法

报错:

Error response from daemon: driver failed programming external connectivity on endpoint prickly_turing (081405caf9fe991605f89d0ada69f3cbbd54e0526b9a85fa9b8ea6619e5161ee): iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8888 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)
Error: failed to start containers: 29683c3b68ac

原因:

docker服务启动时定义的自定义链DOCKER由于某种原因被清掉
重启docker服务及可重新生成自定义链DOCKER
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0          
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:8080

Chain DOCKER (2 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8888 to:172.17.0.2:8080
[email protected]:playbook#iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0          
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:8080

Chain DOCKER (2 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8888 to:172.17.0.2:8080

解决:

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

资源来源于:http://blog.sina.com.cn/s/blog_8ea8e9d50102wwf8.html

原文地址:https://www.cnblogs.com/BrokenHeart/p/10699834.html

时间: 2024-10-12 20:11:38

docker端口映射失败解决方法的相关文章

docker实战系列之docker 端口映射错误解决方法

错误: Error response from daemon: Cannot start container web: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 32797 -j DNAT --to-destination 172.17.0.30:5000 ! -i docker0: iptables: No chain/target/match by that name. 解决办法:重建docker0网络恢

docker 端口映射错误解决方法

#docker run -u root -p 8080:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home jenkins 65cd9915952bbd5885dd9a9a1477e9ce5d46d1f6c952b90a71235539e4e41e0f docker: Error response from daemon: failed to create endpoint confident_mclean on network brid

80端口被屏蔽解决方法,80端口穿透之NAT端口映射技术

介绍一种NAT端口映射技术应用,达到80端口穿透目的,解决80端口被屏蔽的问题,也是80端口被屏蔽解决方法中经常用到的. 80端口穿透类似80端口转发,因为80端口被屏蔽,在数据层面来说是不能直接访问的,但通过端口转发后,在数据层是转发,用户访问是直接访问. 80端口穿透之NAT端口映射技术应用: 一,在局域网内启用nat123端口映射.添加映射.这一步虽然简单便很重要.映射时,外网地址使用自己的域名,外网端口直接写定是80端口. 二,映射后,访问下网站地址,不带端口的外网地址,是正常的.之后,

sudo pip2.7 install pyopenssl失败,解决方法

环境deepin2014rc 运行goagent 提示缺少pyopenssl 于是 sudo pip2.7 install pyopenssl 但是有报错: c/_cffi_backend.c:14:17: fatal error: ffi.h: 没有那个文件或目录 #include <ffi.h> 解决方法: sudo apt-get install apt-file apt-file update apt-file search /ffi.h 然后 安装 libffi-dev之后继续 pi

Genymotion下载失败解决方法

Genymotion下载虚拟机版本时会很慢,而且经常下载失败 解决方法如下: 1.先去选择下载你需要的版本,之后会下载(很慢),或者失败. 2.到C:\Users\yourname\AppData\Local\Genymobile\Genymotion\ova该目录下找ova文件,yourname就是你自己的电脑用户名. 这里就是存放虚拟机版本的位置. 3.找下载网址,C:\Users\yourname\AppData\Local\Genymobile\下面打开genymotion.log文件,

用户 \&#39;IIS APPPOOL\\X\&#39; 登录失败解决方法

最近搭了一个IIS发布VS2010做的网站,在编译器内运行网站没有任何问题,但是再浏览器中输入网址运行就出错了,后来仔细查了资料,终于解决了,给大家介绍一下,不要走弯路. 工具/原料 IIS VS2010 方法/步骤 1 你在浏览器输入网址报这样的错误 2 然后打开你的internet信息服务(IIS)管理器 3 点击“应用程序池” 4 在右边找到你的网站名字,右键“高级设置” 5 找到“进程模型”的标识 6 点开“标识”的下拉框,选择localsystem即可 "无法打开登录所请求的数据库 \

使用Powershell 的获取别的机器WMI类失败解决方法!

有些时候需要连接多台机器去获取他们的类,但是有些时候我们发现计算机无法连接,这个时候怎么办呢? 请修改组策略中以下配置: 可以使用Gpmc.msc 进行以后,本地计算机策略--计算机配置--管理模板--网络--网络连接--WIndow防火墙--允许远程管理启用 即可 截图如下: 使用Powershell 的获取别的机器WMI类失败解决方法!,布布扣,bubuko.com

安装vmware tools失败解决方法

失败提示: reating a new initrd boot image for the kernel. update-initramfs: Generating /boot/initrd.img-3.11.0-12-generic vmware-tools-thinprint initctl: Job failed to start Unable to start services for VMware Tools Execution aborted. 解决方法一: 后来参照了这个网页 ht

访问IIS元数据库失败解决方法

这个问题一般在做.net开发网站时候会遇到,我就是在那个时候遇到的 访问 IIS 元数据库失败 解决方法 现象如下: 访问 IIS 元数据库失败. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.Hosting.HostingEnvironmentException: 访问 IIS 元数据库失败. 用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库(如 IIS://