01-Docker 修改 DNS

DNS 解析和默认网关不同,用比喻来说 网关属于套娃模式,当容器对外访问网络时,会经过宿主机。但是 DNS 可以理解为客户端端点模式,宿主机配置了 DNS 并不能使你 Docker 容器就默认可以解析了。所以要想 Docker 容器可以正常的通过域名访问,需要为容器也设置具体的 DNS 地址。

方法分为指定docker容器设置和宿主机docker统一设置两种:

基础:宿主机统一设置

修改 /etc/docker/daemon.json,按如下示例配置:

1
2
3
4
5
6
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}

修改配置后需要加载配置并重启 docker 服务:

1
2
systemctl daemon-reload
systemctl restart docker

run 时设置

1
docker run -itd --dns=114.114.114.114 centos

最后使用命令进入启动的容器内部,查看 /etc/resolv.conf 文件内容或者通过 ping 等方法验证结果。

build 时设置

修改 resolv.conf 文件和你想要执行的语句放到一起,亲测可行

1
2
RUN echo nameservice 8.8.8.8 >> /etc/resolv.conf && \
pip install flask

01-Docker 修改 DNS
https://flepeng.github.io/042-云原生-01-Docker-01-Docker-修改-DNS/
作者
Lepeng
发布于
2023年3月9日
许可协议