由于本地网络配置的原因,我必须在我的Docker运行命令中添加--dns和--dns-search选项,就像这样:
docker run --dns XX.XX.1.1 --dns-search companydomain -t mycontainer
然而,Docker构建没有相同的选项。在构建期间是否有一种指定这些选项的方法?
基于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
命令的DNS解析行为,因为对/etc/resolv.conf
的更改不是持久的(除了Docker核心工程师之一Brian Goff的评论外,我找不到任何官方参考文献)。
/bin/sh: 1: cannot create /etc/resolv.conf: Read-only file system
。现在该怎么办? - Ali Waqas或者您也可以传递主机网络选项
docker build --network=host -t mycontainer:tag .
Dockerfile
中的/etc/resolv.conf
中添加额外的内容。 - lang2docker build --add-host
而不是纠结于DNS。大多数情况下,您想要访问一个私有注册表来构建一个Docker镜像,然后--add-host
很可能就足够了。例如:docker build --add-host my-private-npm-registry.company.com:192.168.12.44
- richie