resolve.conf 无法更改 - docker-alpine

resolve.conf can't be changed - docker-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

到(更改了 "options")

search domain.local
nameserver 127.0.0.11
options ndots:1

我得到的是:

成功了。

我得到的错误:

当我尝试更改 Dockerfile 或 docker-compose 过程中的 /etc/resolv.conf 文件时,出现错误

can't move '/etc/resolv.confOobcMn' to '/etc/resolv.conf': Resource busy.

目前的解决方法:

没有,因为我正在尝试让它与 Dockerfile 构建或 docker-compose up 进程一起工作

我的基础架构是:

Containers OS: Alpine Linux 3.4 based
Docker: 18.09.2
Docker-Compose: 1.23.2
Host OS: ubuntu \ MacOS

您不能覆盖 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/

显然更改 systemd 单元文件中的 docker 命令有效。

您所要做的就是将 --dns-opt=ndots:15 添加到 /lib/systemd/system/docker.service 内的 ExecStart 行(取决于您的发行版)作为命令行的参数之一,然后重新启动 docker.

根据 github 上 following issue 的建议。