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



我有一个正在运行的mysql容器,名为"drupaldistribution_mysql_1"(ID 307b58c78108)。

现在我想使用名为"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(在流浪的 debian 机器内部)。

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

我的猜测是问题是由于--volumes-from.尽量不要在数据库和其他容器之间共享数据。当我尝试时,我有127.0.1.1 docker-host docker-host线,尽管它是您本地/etc/主机的一部分吗?

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

最后,如果仍然失败,您始终可以从环境中提取 ip。确保您的 mysql 映像公开了一个端口,一旦链接它,您将在环境中DB_PORT_XXXX_TCP_ADDR

最新更新