当前位置: 首页 > 知识库问答 >
问题:

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

年风华
2023-03-14

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

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

我们如何在这里注入我的自定义DNS值?

如果是的话,我们应该使用应用程序设置吗?容器的网络应用程序中的值是什么?

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

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

2018-08-23 14:12:56.100信息-docker运行-d-p 13940:5001-名称xxx-e docker\u CUSTOM\u IMAGE\u name=xxx。阿祖雷克。io/xxx:558-e网站\启用\应用\服务\存储=false-e网站\端口=5001-e网站\站点\名称=xxx-e网站\授权\启用=false-e网站\角色\实例\ ID=0-e网站\实例\ ID=xxx-e HTTP \日志\启用=1 xxx。阿祖雷克。io/xxx:558

船坞日志=========

2018_08_23_RD0003FF2D0408_default_docker.log:

2018-08-23T14:12:49.755843301Z[40m[1m[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[40m[1m[33mwarn[39m[22m[49m:Microsoft.AspNetCore.Server.Kestrel[0]

2018-08-23T14:12:54.761251623Z重写地址'超文本传输协议://: 80'。绑定到UseKestrel()中定义的终结点。

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

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

2018-08-23T14:12:54.908961927Z现在收听:http://0.0.0.0:5001

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。阿祖雷克。io/xxx:549-e网站\u启用\u应用程序\u服务\u存储=false-e网站\u端口=5001-e网站\u站点\u名称=xxx-e网站\u授权\u启用=false-e网站\u角色\u实例\u ID=0-e网站\u实例\u ID=xxx-e HTTP\u日志记录\u启用=1 xxx。xxx。io/xxx:558

2018-08-23 14:12:55.972INFO-站点xxx的容器xxx初始化成功。

2018-08-23 14:12:55.976信息-由于AppSettingsChange和isMainSite而回收容器=真

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

2018-08-23 14:12:56.100信息-docker运行-d-p 13940:5001-名称xxx-e docker\u CUSTOM\u IMAGE\u name=xxx。阿祖雷克。io/xxx:558-e网站\启用\应用\服务\存储=false-e网站\端口=5001-e网站\站点\名称=xxx-e网站\授权\启用=false-e网站\角色\实例\ ID=0-e网站\实例\ ID=xxx-e HTTP \日志\启用=1 xxx。阿祖雷克。io/xxx:558

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

共有2个答案

金阳华
2023-03-14

您不应该使用DNS与微服务通信,相反,您应该使用服务注册表。

看看这篇微软的论文,谈论这个:

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

如您所见,最佳解决方案将取决于您的部署模型。查看关于容器的注意事项:

在一些微服务部署环境(称为集群,将在后面的章节中讨论)中,服务发现是内置的。例如,在Azure容器服务环境中,库伯内特斯和DC/OS与马拉松可以处理服务实例注册和注销。它们还在每个群集主机上运行一个代理,该代理扮演服务器端发现路由器的角色。另一个示例是Azure Service Fabric,它还通过开箱即用的命名服务提供服务注册表。

希望有帮助!

金皓君
2023-03-14

我们在Github和Reddit上回复了您的问题。重新张贴我们的回应在这里可见。

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

然而,我们正在研究一个更好的解决方案,这样就没有必要手动更新resolv.conf,所以敬请关注。"

 类似资料:
  • 本质上,我的问题是,当我在命令行中运行时,仿真程序将以参数启动,其中是DNS服务器的4个ip地址。当我运行时,我只看到作为Windows中的有效DNS服务器列出。由于这个奇怪的第一个DNS服务器,我无法在模拟器内访问internet。当我使用运行模拟器时,一切正常。 但现在我希望能够运行我的应用程序从Android Studio 2.2.3与更正的DNS服务器。那么,有人知道如何在Android

  • 问题内容: 我是Docker的新手。我发现我们可以使用Dockerfile中的ENV指令设置环境变量。但是,如何在Dockerfile中为长命令设置bash别名? 问题答案: 基本上就像您经常做的那样,将其添加到用户的: 和往常一样,这仅适用于交互式外壳: 对于非交互式外壳,您应该创建一个小脚本并将其放在路径中,即: 如果您的别名使用参数(即-> ),则只需添加:

  • 关于首选项 为了让 Illustrator 根据您特定的工作流程尽可能流畅地运行,您需要根据自己的喜好设置首选项。 许多程序设置都存储在 Adobe Illustrator Prefs 文件中,其中包括常规显示选项、文件存储选项、性能选项、文字选项以及增效工具和暂存盘选项。其中大多数选项都是在首选项对话框中设置的。每次退出应用程序时都会存储首选项设置。 如果出现异常现象,可能是因为首选项已损坏。如

  • 问题内容: 我一直在试验Kafka,并从主站点的文档中看到,您可以为jvm设置不同的选项,例如堆大小和它使用的垃圾收集器: http://kafka.apache.org/documentation.html#java 但是,没有说的是如何/在何处设置这些选项。该应用程序带有一个/ config目录,其中包含许多用于配置目的的文件,但没有用于Java的文件。它还带有一个/ bin目录,其中包含一堆

  • 我一直在试验与Kafka和看到从主网站上的留档,你可以设置不同的选项为jvm像堆大小和垃圾收集器,它使用: http://kafka.apache.org/documentation.html#java 然而,它没有说明如何/在哪里设置这些选项。该应用程序附带了一个/config目录,其中包含许多用于配置的文件,但没有一个是用于Java的。它还附带了一个/bin目录,其中包含了一堆Kafka的脚本

  • 问题内容: 每当我运行docker容器时,我都会看到它使用随机MAC地址: 如何为容器运行设置特定的MAC地址? 我可以使用相同的MAC地址同时运行多个容器吗?这些容器不需要访问外部网络,也不需要互相交谈。 问题答案: 使用LXC配置选项设置MAC地址。这是一个如何使用Docker 0.6.1设置MAC地址的示例: 在输出中,您将看到已设置的HWaddr: 更新: 先前的开关(带1个破折号)已被弃