resolve.conf无法更改-docker-alpine

时间:2019-07-25 12:31:41

标签: docker docker-compose alpine

我要实现的目标:

我正在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

2 个答案:

答案 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/