链接的docker集装箱会在链接停下来时连上链接吗?

我一直在想,如果链接的容器closures,并重新启动,与它链接的容器恢复链接?

消防2个容器。

docker run -d --name fluentd millisami/fluentd docker run -d --name railsapp --link fluentd:fluentd millisami/rails 

现在,如果fluentd容器停止并重新启动,那么railsapp容器会自动恢复链接和链接的ENVvariables吗?

更新:

从Docker 1.3开始(或者甚至可能来自早期版本,不确定),如果/etc/hosts文件重新启动,它将使用链接容器的新IP进行更新 。 这意味着如果你通过它在/etc/hosts项中的名字来访问它,而不是环境variables, 你的链接在重启之后仍然可以工作

例:

当你启动两个容器app_imagemysql ,并像这样链接它们:

 $ docker run --name mysql mysql:5.6.20 $ docker run -d --link mysql:mysql app_image 

您将在app_image中的/etc/hosts获得一个条目:

 # /etc/hosts example mysql 172.17.0.12 

而且这个ip会在mysql崩溃并重新启动的情况下被刷新。

因此,在引用链接容器时不要使用环境variables:

 $ ping $MYSQL_PORT_3306_TCP_ADDR # --> don't use! won't work after the linked container restarts $ ping mysql # --> instead, access it by the name as in /etc/hosts 

老答案:

不,不会的。 在容器崩溃的情况下,链接和死亡一样好。 我认为这是一个公开的问题,也就是说,有很多候选scheme,但是还没有哪个scheme能够成为标准的方法。

你可能想看看http://jasonwilder.com/blog/2014/07/15/docker-service-discovery/