使用 Docker 進行應用程序開發和部署的過程中,通常需要連接到外網進行軟件包的下載、容器的構建等操作。
在 Docker 內部訪問外網有兩種方式:
1. 修改 Dockerfile
FROM ubuntu:latest RUN echo "nameserver 8.8.8.8" >>/etc/resolv.conf
在 Dockerfile 中添加上述代碼,將 DNS 地址修改為 Google 的公共 DNS,即可在構建鏡像的過程中解決訪問外網的問題。
2. 掛載主機的 resolv.conf
docker run -it --dns 8.8.8.8 --dns-search example.com --volume /etc/resolv.conf:/etc/resolv.conf ubuntu:latest /bin/bash
在運行容器時使用 --dns 參數,指定 DNS 地址,--dns-search 參數,指定 DNS 的搜索域名。同時掛載主機的 /etc/resolv.conf 文件到容器內的同一路徑下,即可讓 Docker 內部也能夠訪問外網。
總結來說,為了讓 Docker 內部訪問外網,可以在構建鏡像的過程中或者在運行容器時指定 DNS 地址和搜索域名,同時將主機的 resolv.conf 文件掛載到容器中。