如何在Azure web app中为容器设置dns选项

如何在Azure web app中为容器设置dns选项,azure,docker,containers,dockerfile,azure-web-app-service,Azure,Docker,Containers,Dockerfile,Azure Web App Service,这就是运行容器时发生的情况。我想知道是否有一种方法可以启动带有自定义DNS的容器的web应用程序 我的ILB-ASE中有5个微服务 他们需要能够在VNet中使用我的自定义DNS服务器相互呼叫。当我检查resolv.conf时,我看到127.0.0.11。我需要将其设置为我自己的自定义dns服务器 如何在此处插入我的自定义DNS值? 我们是否应该使用appsettings如果是,web应用中容器的值是多少 所以我可以使用--dns选项 Azure运行它的神秘部分。一些值来自appsettings

这就是运行容器时发生的情况。我想知道是否有一种方法可以启动带有自定义DNS的容器的web应用程序

我的ILB-ASE中有5个微服务 他们需要能够在VNet中使用我的自定义DNS服务器相互呼叫。当我检查resolv.conf时,我看到127.0.0.11。我需要将其设置为我自己的自定义dns服务器

如何在此处插入我的自定义DNS值?

我们是否应该使用
appsettings
如果是,web应用中容器的值是多少

所以我可以使用--dns选项

Azure运行它的神秘部分。一些值来自appsettings

2018-08-23 14:12:56.100信息-docker run-d-p 13940:5001-名称xxx -e DOCKER\u CUSTOM\u IMAGE\u NAME=xxx.azurecr.io/xxx:558-e网站\u启用\u应用程序\u服务\u存储=false-e网站\u端口=5001-e 网站\u SITE\u NAME=xxx-e网站\u AUTH\u ENABLED=False-e 网站\角色\实例\ ID=0-e网站\实例\ ID=xxx-e HTTP_LOGGING_ENABLED=1 xxx.azurecr.io/xxx:558

======码头工人日志=========

2018_08_23_RD0003FF2D0408_默认_docker.log:

2018-08-23T14:12:49.755843301Z[4000万[100万]33mwarn[39m[2200万[49m: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]

2018-08-23T14:12:49.755897801Z未配置XML加密程序。密钥 {xxx xxx xxx xxx xxx xxx}可以以未加密的形式持久化到存储器中

2018-08-23T14:12:54.761216323Z[40米[1米]33米瓦恩[39米[22米[49米: Microsoft.AspNetCore.Server.Kestrel[0]

2018-08-23T14:12:54.761251623Z覆盖地址“。 而是绑定到UseKestrel()中定义的端点

2018-08-23T14:12:54.908189021Z托管环境:生产

2018-08-23T14:12:54.908386123Z内容根路径:/app

2018-08-23T14:12:54.908961927Z正在收听:

2018-08-23T14:12:54.909256229Z应用程序已启动。按Ctrl+C组合键可启动 关闭

2018_08_23_RD0003FF2D0408_docker.log:

2018-08-23 14:12:44.125信息-回收集装箱因为 AppFrameworkVersionChange和appFrameworkVersion=xxx.xxx.io/xxx:558

2018-08-23 14:12:45.900信息-现场启动容器

2018-08-23 14:12:45.900信息-docker run-d-p 30464:5001--名称xxx -e DOCKER\u CUSTOM\u IMAGE\u NAME=xxx.azurecr.io/xxx:549-e网站\u启用\u应用程序\u服务\u存储=false-e网站\u端口=5001-e 网站\u SITE\u NAME=xxx-e网站\u AUTH\u ENABLED=False-e 网站\角色\实例\ ID=0-e网站\实例\ ID=xxx-e HTTP_LOGGING_ENABLED=1 xxx.xxx.io/xxx:558

2018-08-23 14:12:55.972信息-站点xxx的容器xxx已初始化 成功

2018-08-23 14:12:55.976信息-回收容器因为 AppSettingsChange和isMainSite=True

2018-08-23 14:12:56.099信息-现场启动容器

2018-08-23 14:12:56.100信息-docker run-d-p 13940:5001-名称xxx -e DOCKER\u CUSTOM\u IMAGE\u NAME=xxx.azurecr.io/xxx:558-e网站\u启用\u应用程序\u服务\u存储=false-e网站\u端口=5001-e 网站\u SITE\u NAME=xxx-e网站\u AUTH\u ENABLED=False-e 网站\角色\实例\ ID=0-e网站\实例\ ID=xxx-e HTTP_LOGGING_ENABLED=1 xxx.azurecr.io/xxx:558

2018-08-23 14:13:05.385信息-站点xxx的容器xxx已初始化 成功


您不应该使用DNS与微服务通信,而应该使用

检查这个,谈论这个:

每个微服务都有一个唯一的名称(URL),用于解析其 位置。你的微服务需要在任何地方都可以寻址 正在运行。如果您必须考虑哪台计算机正在运行 特别是微服务,事情很快就会变坏。同样 DNS解析特定计算机的URL,即您的微服务 需要具有唯一的名称,以便其当前位置为 可发现。微服务需要可寻址的名称,使其 独立于运行它们的基础架构。这 这意味着您的服务之间存在交互 部署以及如何发现它,因为需要一个服务 同样,当计算机出现故障时,注册表 服务必须能够指示服务当前运行的位置

如您所见,最佳解决方案将取决于您的部署模型。请查看以下有关容器的说明:

在某些微服务部署环境中(称为集群 服务发现是内置的 例如,在Azure容器服务环境中,Kubernetes和 使用Marathon的DC/OS可以处理服务实例注册和 取消注册。它们还在每个播放的群集主机上运行代理 服务器端发现路由器的角色。另一个示例是Azure 服务结构,它还通过其 现成的命名服务


希望能有所帮助!

我们在Github和Reddit上回答了您的问题。请将我们的回答重新发布在此处,以便查看

“目前,有一个解决方法:您应该将默认resolv.conf修改为自定义DNS IP,然后在docker build上添加自定义resolv.conf,方法是在entrypoint脚本中添加一个COPY命令,并将自定义resolv.conf指向/etc


但是,我们正在研究更好的解决方案,因此不需要手动更新resolv.conf,请继续关注。”

你想吗?不,我需要能够设置应用程序服务计划的DNS。这样我的微服务可以互相调用。我因为某种原因被否决了,但我非常确定服务发现是微服务的最佳解决方案。它是一个已经建立的行业标准。你尝试过吗?我希望它有帮助。感谢answer、 @注册表服务必须能够指示