2017-11-25 173 views
0

嘿,我对这些码头工具很陌生。我试图用bitbucket启动Docker容器,但是我得到了这个输出。Docker IP-TABLES错误

[email protected]:~# docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server 
6da32052deeba204d5d08518c93e887ac9cc27ac10ffca60fa20581ff45f9959 
docker: Error response from daemon: driver failed programming external connectivity on endpoint bitbucket (55d12e0e4d76ad7b7e8ae59d5275f6ee85c8690d9f803ec65fdc77a935a25110): (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 7999 -j ACCEPT: iptables: No chain/target/match by that name. 
(exit status 1)). 
[email protected]:~# 

每次我试图激活任何搬运工 容器时得到了相同的输出。有人能帮我吗?

P.S.还有一个问题。

172.1.0.2是什么意思?我只能说,这不是我的IP。

回答

0

172.1 .0.2将分配给默认多克尔桥网络内的容器中的IP(docker0虚拟接口)。尽管您正在指示Docker引擎“发布”(Docker术语中)两个端口,但这些内容无法从外部访问。

为此,引擎使用iptables创建端口转发规则,iptables会将所有传入流量转发到主机所有接口上的端口tcp/7990和tcp/7999到172.17.0.2的相同端口在docker0接口上(容器中的进程希望收听)。

它看起来像DOCKER iptables链,发生这种情况不存在。也许你有其他工具来操纵iptables,这可能会抹去Docker引擎正在做的事情。尝试识别它们并重新启动Docker引擎(它应该在启动时重新创建所有内容)。

您还可以指示引擎不要通过适当地配置Docker守护进程来操纵iptables。如果你想使用网桥驱动程序,你需要自己设置(尽管你也可以使用主驱动程序)。 Here就是一个很好的例子。