Docker容器網絡代理設置

之前已經講過如何設置Docker守護進程如何設置網絡代理,那麼如何設置運行的Docker容器的網絡代理呢?

設置環境變量

設置容器環境變量,這也是最直接的一種方式。啓動容器時,通過設置–env的flag,將環境變量傳入容器。

變量名 Dockerfile示例 Docker run示例
HTTP_PROXY ENV HTTP_PROXY “http://127.0.0.1:3001” –env HTTP_PROXY=“http://127.0.0.1:3001”
HTTPS_PROXY ENV HTTPS_PROXY “https://127.0.0.1:3001” –env HTTPS_PROXY=“https://127.0.0.1:3001”
FTP_PROXY ENV FTP_PROXY “ftp://127.0.0.1:3001” –env FTP_PROXY=“ftp://127.0.0.1:3001”
NO_PROXY ENV NO_PROXY “*.test.example.com,.example2.com” –env NO_PROXY="*.test.example.com,.example2.com"

這種方式的優點就是直接,但缺點就是每次啓動容器,都需要顯示的設置,那麼編譯一些項目就會遇到麻煩。比如kubevirt項目,會在代碼中啓動容器下載go項目,需要用到代理,那就必須手動找到啓動容器的位置,顯示加上以上的環境變量,增加了很多工作量。爲了解決這種情況,在Docker 17.07以上,可以使用配置Docker客戶端的方式。

配置Docker客戶端

前置條件:Docker 17.07以上。
  在啓動docker用戶的Home目錄,創建~/.docker/config.json文件,增加http_proxy、https_proxy、ftp_proxy等的設置。當然,也可以同時配置多個代理服務器。
  對於不想使用no_proxy的路徑,也可以增加no_proxy的配置,no_proxy的內容用逗號分隔,而且支持通配符*。
  示例:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://127.0.0.1:3001",
     "httpsProxy": "http://127.0.0.1:3001",
     "noProxy": "*.test.example.com,.example2.com"
   }
 }
}

啓動容器,即可看到容器內會被自動加入代理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章