標籤:
1、如果docker主機不需要通過代理串連外網
則docker的相關命令(如docker search)或docker容器與網路相關的操作都可以正常進行,不需要特殊設定。
2、當docker主機 是通過代理才能串連外網時,採用服務方式啟動守護進程
如果docker守護進程是通過服務的方式啟動的(sudo start docker)
當我們執行如 docker search ubuntu 命令時,會報錯
Error response from daemon: Get https://index.docker.io/v1/search?q=ubuntu: dial tcp: lookup index.docker.io on 127.0.1.1:53: read udp 127.0.1.1:53: i/o timeout
而且這時啟動的容器,在容器內也無法串連外網。
需要通過設定來完成。
3、當docker主機 是通過代理才能串連外網時,讓docker守護進程可串連外網,非服務啟動方式
通過如下方式啟動docker守護進程
sudo HTTP_PROXY=http://Proxy 位址:連接埠 docker daemon
這時執行如 docker search ubuntu 命令時,可以成功。 注意,這並不需要docker主機自己設定代理上網(也就是docker進程沒有利用主機設定的代理上網)。
但是正常啟動的容器,在容器內也無法串連外網。
4、當docker主機 是通過代理才能串連外網時,採用服務方式啟動
可以修改 /etc/default/docker 設定檔
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"
export http_proxy="http://Proxy 位址:連接埠"
這樣採用 sudo start docker方式啟動守護進程後
這時執行如 docker search ubuntu 命令時,可以成功。
注意,這並不需要docker主機自己設定代理上網(也就是docker進程沒有利用主機設定的代理上網)。
但是正常啟動的容器,在容器內也無法串連外網。
5、怎麼讓容器通過代理上網
容器本身是一個輕量級的linux系統,我們可以通讓主機上網一樣設定讓其上網。容器上網和讓docker守護進程連網沒有關係。
方法一:臨時連網
在shell介面上設定臨時環境變數: export http_proxy="http://代理ip地址:連接埠"
如:export http_proxy="http://10.41.70.8:80"
一旦設定正確的環境變數http_proxy,容器就可以正常上網了。
因為是臨時的,shell關閉後,環境變數就沒了。
方法二:修改主目錄下的.bashrc檔案,增加兩行
http_proxy=http://yourproxyaddress:proxyport
export http_proxy
就是把環境變數http_proxy持久化,但只對該使用者登入有效。
注意:容器設定代理 和 docker主機設定代理以及docker守護進程設定代理無關,也就是容器只會使用自己的代理資訊上網。
docker 學習筆記21:docker串連網路的設定