在docker build期间设置DNS选项

Jul*_*sar 14 dns docker

由于本地网络配置,我必须在我的docker run命令中添加--dns和--dns-search选项,如下所示:

docker run --dns XX.XX.1.1 --dns-search companydomain -t mycontainer
Run Code Online (Sandbox Code Playgroud)

但是,docker build没有相同的选项.有没有办法在构建期间指定这些选项?

Mur*_*mel 9

基于Dockerfile的解决方案

您还可以在每个RUN命令级别修复DNS查找问题:

RUN echo "nameserver XX.XX.1.1" > /etc/resolv.conf && \ 
    echo "search companydomain" >> /etc/resolv.conf && \    
    command_depending_on_dns_resolution
Run Code Online (Sandbox Code Playgroud)

请记住:这只会改变这一RUN命令的DNS解析行为,因为对它的更改/etc/resolv.conf不是持久性的(除了核心Docker工程师之一 Brian Goff 的评论之外,我找不到任何关于此行为的官方参考) .

  • 没有权限?即使以 root 身份运行 docker (5认同)
  • 这曾经有效 - 我在公司网络上的许多内部 docker 版本上对其进行了编程 - 从最新版本的 docker 开始, /etc/resolv.conf 似乎不再工作,因为它们将文件限制为只读 -只是回到这篇文章来通知那些在 2021 年发现这一点的人。 (4认同)
  • @Cody是的,我收到此错误:“/bin/sh:1:无法创建/etc/resolv.conf:只读文件系统”。现在有什么方法呢? (3认同)

BMi*_*tch 5

docker构建使用主机上运行的docker引擎的DNS设置。请在此处查看我的答案,以获取更新引擎上DNS设置的步骤。