Docker容器不能第二次启动(iptables)

使用本指南http://docs.graylog.org/en/1.1/pages/installation/docker.html我在Ubuntu 14.04服务器上设置了一个Docker容器。

如预期的那样,使用命令第一次启动容器。

docker run -t -p 9000:9000 -p 12201:12201 graylog2/allinone 

我比能够打开暴露在端口9000上的Web界面。

当我停止Container并尝试使用相同的命令再次运行时,出现此错误:

 Error response from daemon: Cannot start container c5cc5831fe854801345ffa2370fdb4f00f4182e209fe1af78233c93be3952bb1: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 12201 -j DNAT --to-destination 172.17.0.9:12201 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1) 

用任何-p参数启动容器将导致正在运行的容器。 但港口似乎没有被暴露。 我无法访问networking界面。 “docker ps”的输出结果如下所示:

 84d322d35d58 graylog2/allinone "/opt/graylog/embedd 9 minutes ago Up 9 minutes 443/tcp, 514/tcp, 4001/tcp, 9000/tcp, 514/udp, 12201/tcp, 12900/tcp, 12201/udp focused_elion 

对我来说,看起来端口是暴露的。 但主机不会将请求转发到Docker容器。

在卸下容器并重新安装Docker并重新安装容器后,它将在第一次启动时再次运行。 但是第二次失败了。

任何提示或指针,欢迎!

希望从docs.docker.com下面的段落可以帮助你。为我工作…

哎呀! 就在你停止容器之后,你会打电话说另一个开发者需要回收容器。 从这里你有两个选择:你可以创建一个新的容器或重新启动旧的容器。 让我们看看启动我们以前的容器备份。

 $ docker start nostalgic_morse nostalgic_morse 

现在再次快速运行docker ps -l以查看正在运行的容器是否已备份,或浏览到容器的URL以查看应用程序是否响应。

注意:另外可用的docker restart命令运行一个停止,然后在容器上启动。