Azure 在docker Swarm环境中使用docker compose更改容器生成的DNS值

Azure 在docker Swarm环境中使用docker compose更改容器生成的DNS值,azure,dns,docker-compose,docker-swarm,azure-container-service,Azure,Dns,Docker Compose,Docker Swarm,Azure Container Service,在这美好的2017年开始之际,向所有人致意 我有一个“微服务”应用程序,由docker Swarm在Azure容器服务云上编写和编排docker compose。 Azure上Docker的版本是1.12.5 我已经建立了一个站点到站点的VPN,允许一些应用程序连接到我们所在地的一些服务器。 VPN连接工作起来很有魅力。我可以从Azure云中的虚拟机ping私有DNS和其他服务器。 令人恼火的是,docker compose没有考虑其他DNS服务器的定义。 在我的docker compose中,

在这美好的2017年开始之际,向所有人致意

我有一个“微服务”应用程序,由docker Swarm在Azure容器服务云上编写和编排docker compose。 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

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


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

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

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


我的问题是,只有Swarm代理可以访问VPN…

感谢您跟进您自己的问题:-)如果您将来有关于Azure容器服务的问题,请将其标记为“Azure容器服务”,以引起我们的注意(免责声明我为MS工作)。请注意,您可以在以下位置为配置选项提出功能请求(甚至提供修补程序)