0

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

我有一个使用 docker-compose 构建的“微服务”应用程序,并由 docker Swarm 在 Azure 容器服务云上进行编排。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 代理的虚拟机中的任何内容。

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

4

1 回答 1

0

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

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

我的问题是只有 Swarm Agent 才能访问 VPN……

于 2017-01-10T11:03:25.097 回答