在docker构建期间设置DNS选项

在docker构建期间设置DNS选项,docker,dns,Docker,Dns,由于本地网络配置,我必须向docker运行命令添加--dns和--dns搜索选项,如下所示: docker run --dns XX.XX.1.1 --dns-search companydomain -t mycontainer 但是docker build没有相同的选项。是否有方法在生成期间指定这些选项?docker生成使用主机上运行的docker引擎的DNS设置。有关更新引擎上DNS设置的步骤,请参阅。基于Dockerfile的解决方案 您还可以在每个运行-命令级别修复DNS查找问题:

由于本地网络配置,我必须向docker运行命令添加--dns和--dns搜索选项,如下所示:

docker run --dns XX.XX.1.1 --dns-search companydomain -t mycontainer

但是docker build没有相同的选项。是否有方法在生成期间指定这些选项?

docker生成使用主机上运行的docker引擎的DNS设置。有关更新引擎上DNS设置的步骤,请参阅。

基于Dockerfile的解决方案

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

RUN echo "nameserver XX.XX.1.1" > /etc/resolv.conf && \ 
    echo "search companydomain" >> /etc/resolv.conf && \    
    command_depending_on_dns_resolution

请记住:这只会更改此
RUN
命令的DNS解析行为,因为对
/etc/resolv.conf
的更改不是持久的(除了Brian Goff之外,我找不到此行为的任何官方参考).

您可以尝试在
Dockerfile中的
/etc/resolv.conf
中添加额外的内容,这或多或少是一个相同的问题:权限被拒绝?即使在以root用户身份运行docker时,您可能也应该针对您的问题提出一个新问题,因为对我来说,这仍然有效(使用v18.06.1-ce和API v1.38进行了测试)这看起来像是我需要的解决方案,但我看到权限问题被使用了——我在公司网络上的许多内部docker构建中都对其进行了编程——从最新版本的docker开始,/etc/resolv.conf似乎不再起作用,因为它们将文件限制为只读——只是回到这篇文章来通知发现它的人这是在2021年。