无法访问docker运行的链接容器(不存在/etc/hosts中的映射)
我有一个名为“drupaldistribution\uMySQL\u1”(ID307B58C78108)的正在运行的mysql容器 现在我想用一个名为“drush”的命令工具启动另一个容器,该工具可以访问mysql容器。我使用命令:无法访问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
$ 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'