docker 學習筆記21:docker連接網絡的設置


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://代理地址:端口 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://代理地址:端口"

這樣采用 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守護進程設置代理無關,也就是容器只會使用自己的代理信息上網。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM