我要实现的目标:
我正在AWS的2个不同实例上启动2个容器。 我也有一个route53本地域来保存这些实例的记录。 当我从“ Web”实例ping到“ db”实例时,我使用“ ping db.domain.local”,而不能仅使用“ ping db”(反之亦然)。
我到目前为止所做的事情:
将文件/etc/resolv.conf更改为
search domain.local
nameserver 127.0.0.11
options ndots:0
到(更改了“选项”)
search domain.local
nameserver 127.0.0.11
options ndots:1
我得到的:
让它正常工作。
我遇到的错误:
当我尝试更改Dockerfile或docker-compose进程中的/etc/resolv.conf文件时,出现错误
无法将'/etc/resolv.confOobcMn'移至'/etc/resolv.conf':资源繁忙。
目前的解决方法:
没有一个,因为我试图使其与Dockerfile构建或docker-compose up过程一起使用
我的基础架构是:
Containers OS: Alpine Linux 3.4 based
Docker: 18.09.2
Docker-Compose: 1.23.2
Host OS: ubuntu \ MacOS
答案 0 :(得分:1)
显然,在docker
单位文件中更改systemd
命令是可行的。
您要做的就是将--dns-opt=ndots:15
添加到ExecStart
内的/lib/systemd/system/docker.service
行(取决于您的发行版)中,作为命令行的参数之一,然后重新启动docker。 / p>
如github上的following issue所建议。
答案 1 :(得分:0)
您无法覆盖docker容器中的resolv.conf。 Docker使用resolv.conf做一些有趣的事情,以使他们的许多内部网络(GWBridge,Overlays)正常工作。
您可能要在启动容器时尝试使用其--dns-opt = OPTIONS标志,或更新docker-compose以处理dns标志:
https://docs.docker.com/v17.09/engine/userguide/networking/default_network/configure-dns/