【问题标题】:Docker Networking: Auto-discovering host names in a bridge networkDocker 网络:在桥接网络中自动发现主机名
【发布时间】:2015-11-20 20:23:08
【问题描述】:

我正在尝试使用 Docker 1.9 获得以下非常基本的(或者我认为的)网络设置:

  • 我有多个运行服务的容器,例如一个postgres 容器和一个python 容器(可能不止两个)。
  • 这些容器通过bridge 网络相互连接。
  • 我希望它们可以使用唯一的主机名进行寻址(即 Python 容器应该能够通过 ping postgres 对 Postgres 容器执行 ping 操作)。

按照教程 (https://docs.docker.com/engine/userguide/networking/dockernetworks/),我可以使用以下命令序列来实现:

#create the containers
docker run -itd --name container1 busybox
docker run -itd --name container2 busybox
#create the network
docker network create test
docker network connect test container1
docker network connect test container2

这工作得很好,Docker 正确地将etc/hosts 中的条目设置为指向正确的 IP 地址。但是,我也希望能够同时运行该设置的多个实例(即容器 + 网络)。这不起作用,因为/etc/hosts 文件中每个容器的条目都等于它的name,它需要是唯一的。指定 hostname 参数并不能解决此问题,因为它只会更改容器的 local 主机名(即它自己看到的主机名)。

我会非常感兴趣的一种方法来做到这一点,而无需求助于在容器上运行 DNS 服务。这似乎是一个简单的问题,但不幸的是我在/etc/hosts 文件中找不到任何配置选项来更改容器的名称。

顺便说一句,我希望主机名在我的网络+容器设置的每个实例中都相同,这样我就不需要将主机名动态传递到容器中(例如,告诉 Python 容器 Postgres 容器的地址)

编辑:我对 Docker 的问题跟踪器做了一些研究,似乎有一个功能正在筹备中:https://github.com/docker/libnetwork/issues/737

【问题讨论】:

  • 这是一个非常重要的问题:--link <name or id>:alias ("Legacy links") 允许您在两个容器之间定义一个“别名”(由同一个 docker 守护进程管理)。该别名可以被不同的docker run 重用,允许每个容器看到自己的别名链接容器(具有相同的别名)。我没有发现新的 libnetwork 具有相同的功能。
  • 是的,我也读到过这个,在 1.9 中找不到类似的功能

标签: docker


【解决方案1】:

docker 1.10, and PR 19242 可以帮忙:

docker create --net-alias=[]: Add network-scoped alias for the container

docker 1.10 有一个新部分 Network-scoped alias:

虽然链接提供了在容器内本地化的私有名称解析,但网络范围的别名为特定网络范围内的任何其他容器通过备用名称发现容器提供了一种方法。
与由服务的消费者定义的链接别名不同,网络范围的别名由向网络提供服务的容器定义。

继续上面的示例,使用网络别名在 isolated_nw 中创建另一个容器。

$ docker run --net=isolated_nw -itd --name=container6 --net-alias app busybox
8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17

现在让我们使用不同的网络范围别名将container6 连接到local_alias 网络。

$ docker network connect --alias scoped-app local_alias container6

在此示例中,container6 现在在网络 isolated_nw 中别名为 app,在网络 local_alias 中别名为 scoped-app

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多