无法访问docker运行的链接容器(不存在/etc/hosts中的映射)

无法访问docker运行的链接容器(不存在/etc/hosts中的映射),docker,Docker,我有一个名为“drupaldistribution\uMySQL\u1”(ID307B58C78108)的正在运行的mysql容器 现在我想用一个名为“drush”的命令工具启动另一个容器,该工具可以访问mysql容器。我使用命令: $ docker run --link 307b58c78108:db --volumes-from drupaldistribution_data_1 -w /data/www/drupal drush/drush sqlc && cat /etc

我有一个名为“drupaldistribution\uMySQL\u1”(ID307B58C78108)的正在运行的mysql容器

现在我想用一个名为“drush”的命令工具启动另一个容器,该工具可以访问mysql容器。我使用命令:

$ docker run --link 307b58c78108:db --volumes-from drupaldistribution_data_1 -w /data/www/drupal drush/drush sqlc && cat /etc/hosts
但是drush容器中的/etc/hosts文件不包含有关链接容器的信息:

127.0.0.1   localhost
127.0.1.1 docker-host docker-host

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Docker检查drush容器返回:

$ docker inspect -f "{{ .HostConfig.Links }}" 7d5f4cea983e

[/drupaldistribution_mysql_1:/tender_banach/db]
我运行docker版本:docker版本1.6.2,构建7c8fca2(位于vagrant debian机器内部)


为什么在hosts文件中没有关于链接的mysql容器的引用?

我猜问题是由于
--来自
的卷造成的。尽量不要在数据库和其他容器之间共享数据。
当我尝试时,我有
127.0.1.1 docker主机docker主机
行,但它是本地/etc/hosts的一部分吗

此外,您还可以将名称与
--link
一起使用,而不是使用id


最后,如果仍然失败,您始终可以从环境中提取ip。请确保您的mysql映像公开了一个端口,一旦您链接它,您将在环境中拥有
DB\u port\u XXXX\u TCP\u ADDR

问题可能不是由“--volumes from”引起的。我只使用“-link”选项尝试了这个命令,结果是一样的:
docker run--rm--link drupal分布\u mysql\u 1:db drush/drush--version&&cat/etc/hosts&&env
,但是hosts文件只包含容器(localhost)和docker主机(vagrant机器)的条目,而不包含链接容器的条目。此外,未设置db容器的环境变量。mysql容器公开一个端口。此bash命令将对您的主机进行cat
/etc/hosts
。您应该这样运行它:
dockerrun--rm--linkdrupaldistribution\umysql\u1:db--entrypointbash-drush/drush-c'drush--version&&cat/etc/hosts&&env'