Docker是一種開源的應用容器引擎,通過使用容器的方式,在統一的開發和測試環境中移植應用程序。Docker有一個獨特的特性,即可以實現在容器中運行程序,而無需在主機上安裝它,因此,Docker越來越受到開發者的歡迎。但是,有時候我們需要在Docker容器中訪問外網,接下來,我們將詳細介紹如何實現這一功能。
要在Docker容器中訪問外網,需要修改Docker的配置文件。Docker的默認配置文件在/etc/docker/daemon.json里面, 如果該文件不存在,則需要新建。
{ "dns": ["8.8.8.8", "114.114.114.114"], "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/", "https://dockerhub.azk8s.cn"], "insecure-registries": [], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": {"max-size": "100m", "max-file": "3"}, "storage-driver": "overlay2", "iptables": false, "live-restore": true, "max-concurrent-downloads": 10, "max-concurrent-uploads": 5 }
注:以上僅為示例,具體配置根據自己實際環境進行調整。
其中, "dns": ["8.8.8.8", "114.114.114.114"] 表示設置Docker的DNS服務器,此處將Google的DNS服務器和114 DNS服務器配置為Docker的DNS服務器,確保容器中的程序能夠解析域名。
接下來,修改Docker配置文件中的iptables配置。在文件最后添加"iptables": false,讓Docker不管本地的iptables。這是因為,如果 iptables 沒設置,可能會導致Docker不能從容器中訪問主機外網的情況。
最后,重新啟動Docker服務。
sudo systemctl daemon-reload sudo systemctl restart docker
通過以上步驟,我們就可以在Docker容器中訪問外網了。