Docker无法链接到非运行的容器 – 通过重启来修复

我有一个运行在Ubuntu上docker的ELK栈。 有时候,由于在我们的开发环境中预期会出现错误的查询或错误消息,elasticsearch容器将终止。

我们遇到的问题是ES容器终止后,由于以下错误,无法重新启动Logstash容器:

Cannot link to a non running container: /elasticsearch AS /logstash/elasticsearch 

完整的命令列表是:

 $ sudo docker stop logstash $ sudo docker start elasticsearch $ sudo docker start logstash Cannot link to a non running container: /elasticsearch AS /logstash/elasticsearch 

我已经validation,ES容器确实回来了,我可以通过curl连接到ES,但logstash容器不会启动。

logstash容器configuration有以下链接:

 /elasticsearch:/logstash/elasticsearch 

Docker版本信息:

 $ docker version Client: Version: 1.11.0 API version: 1.23 $docker --version Docker version 1.11.0, build 4dc5990 

重新启动整个虚拟机解决了问题,并允许我正确地重新启动所有的容器,一切都很好,直到ES终止。

虽然不是世界末日,但我真的宁愿避免重新启动来解决这个问题。

有任何想法吗?

有时也会发生,上次是今天。 你可以通过运行来避免重启

sudo service docker restart

(或类似的命令,取决于你的操作系统)