【问题标题】:Change DNS value of a container build with docker-compose in a Docker Swarm environment在 Docker Swarm 环境中使用 docker-compose 更改容器构建的 DNS 值
【发布时间】:2017-01-02 08:23:34
【问题描述】:

在这个美好的 2017 年初向大家致以问候

我在 Azure 容器服务云上使用 docker-compose 和 docker Swarm 编排了一个“微服务”应用程序。 Azure 上的 Docker 版本是 1.12.5。

我设置了一个站点到站点 VPN,以允许某些应用程序将自己与我们所在位置的某些服务器连接起来。 VPN 连接就像一个魅力。我可以从 Azure 云中的虚拟机 ping 私有 DNS 和其他服务器。 令人讨厌的是,docker-compose 没有处理其他 DNS 服务器的定义。 在我的 docker compose 中,我定义了我们私有 DNS 的 IP 和 Google 公共 DNS 的两个 IP:

version: '2'
services:
   myApp:
      build: something
      dns:
         - X.X.X.X
         - 8.8.8.8
         - 8.8.4.4

正如您所怀疑的,这不起作用。 myApp 的 /etc/resolv.conf 不包含这些 IP。

我尝试使用这种命令运行 myApp:

docker run myAppContainer –dns X.X.X.X …

通过这种方式,myApp 容器可以根据需要使用我们的私有 DNS。

我看到很多帖子给出了一个简单的解决方案,通过在主机(/etc/default/docker)上编辑docker的默认值。但是使用我在 Azure 中的设置,我无法更改托管 Swarm 代理的虚拟机中的任何内容。

所以,我真的需要你的帮助。

【问题讨论】:

    标签: azure dns docker-compose docker-swarm azure-container-service


    【解决方案1】:

    当我们创建 Azure 容器服务时,Azure 会创建一个 Swarm Master 虚拟机,其中包含一个子网和一个 Swarm 代理(带有一些 VM)以及它自己的子网。

    所以我们有两个子网,如果我想定义一个托管在 VPN 后面的 DNS,Swarm Master 和 Swarm Agent 必须能够使用 VPN。如果只有一个人可以使用 VPN,Docker 无法解析主机名。

    我的问题是只有 Swarm Agent 可以访问 VPN...

    【讨论】:

    • 感谢您跟进您自己的问题 :-) 如果您以后有与 Azure 容器服务相关的问题,请使用“azure-container-service”标记它以引起我们的注意(免责声明我工作形式)。请注意,您可以在 github.com/Azure/acs-engine 上针对配置选项提出功能请求(甚至提供补丁)
    猜你喜欢
    • 2021-01-01
    • 2019-02-25
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    相关资源
    最近更新 更多