欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

快速設(shè)置Docker的三種網(wǎng)絡(luò)代理配置方式

 更新時(shí)間:2025年04月30日 09:37:01   作者:Roc.Chang  
這篇文章主要介紹了快速設(shè)置Docker的三種網(wǎng)絡(luò)代理配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

通過代理訪問網(wǎng)絡(luò)是一個(gè)比較頭疼的事情,例如:想訪問遠(yuǎn)程的 Docker Daemon 需要代理,想拉取或推送國(guó)外的鏡像需要代理,想容器內(nèi)部訪問國(guó)外的資源又需要代理。

上面的場(chǎng)景是不是讓你很頭大,但是請(qǐng)想開點(diǎn),這篇文章將讓你通往自由的國(guó)度。保護(hù)你的頭發(fā),讓你留出更多的時(shí)間去做該做的事情。

上面說的是三個(gè)場(chǎng)景就是針對(duì)于不同的網(wǎng)絡(luò)代理需要,根據(jù)需要處理即可。

Docker Client - 代理訪問遠(yuǎn)程的 Docker Daemon

參考 Docker 官方文檔:Use the Docker command line

DockerClientDaemon 端是可以不在同一個(gè)機(jī)器上的,可以通過 docker -h 連接其他的 Docker Daemon

Client 端設(shè)置代理其實(shí)就是設(shè)置 Linux 系統(tǒng)的代理,從而讓系統(tǒng)的命令行可以通過代理連接到外部的網(wǎng)絡(luò)。

一般只需要配置 HTTP_PROXYHTTPS_PROXY 這兩個(gè)即可。

  • 臨時(shí)生效: 在命令行中執(zhí)行下面的命令,根據(jù)自己實(shí)際代理 IP 與代理端口設(shè)置(需要允許局域網(wǎng)連接):
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
  • 永久生效,在系統(tǒng)變量中配置。系統(tǒng)變量配置有多個(gè)地方,例如在 /etc/profile 文件的底部添加下面的內(nèi)容:
export https_proxy=http://127.0.0.1:7890 
export http_proxy=http://127.0.0.1:7890 

讓配置文件生效:

source /etc/profile 

恭喜,Docker Client 代理配置完成!

Docker Daemon - 代理拉取或推送國(guó)外鏡像

參考 Docker 官方文檔:Control Docker with systemd

有的時(shí)候我們會(huì)用到一些國(guó)外的鏡像,比如搭建 k8s 時(shí)會(huì)用到 k8s.gcr.io 提供的鏡像,但是無法正常 pull;或者你想將某些鏡像上傳到國(guó)外的鏡像倉(cāng)庫(kù)中,都需要使用代理進(jìn)行操作。

注:

  • Docker 守護(hù)程序(dockerd)是在其啟動(dòng)環(huán)境中使用 HTTP_PROXY、HTTPS_PROXYNO_PROXY 環(huán)境變量來配置 HTTPHTTPS 代理行為,需要在 Docker systemd 服務(wù)文件中添加此配置。
  • daemon.json 文件或者是在系統(tǒng)環(huán)境變量文件中配置它們都不會(huì)使其生效。

要實(shí)現(xiàn) Daemon 代理會(huì)比較復(fù)雜一些,并且下面的操作將覆蓋默認(rèn)的 docker.service 文件,這樣當(dāng) Docker 啟動(dòng)的時(shí)候就會(huì)讀取到下面的代理配置信息:

1.在 /etc/systemd/system 目錄下創(chuàng)建 docker.service.d 目錄

sudo mkdir -p /etc/systemd/system/docker.service.d

2.在該目錄下創(chuàng)建 http-proxy.conf 文件

sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf

3.選用你最喜歡的編輯器,編輯該文件并添加下面的內(nèi)容,這里使用 vi/vim 進(jìn)行編輯。

vim /etc/systemd/system/docker.service.d/http-proxy.conf

根據(jù)自身需要添加下面的內(nèi)容并替換為實(shí)際的配置,一般只需要添加 HTTP_PROXYHTTPS_PROXY

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

【注】HTTP_PROXY 用于代理訪問 http 請(qǐng)求,HTTPS_PROXY 用于代理訪問 https 請(qǐng)求,如果想某個(gè) IP域名不走代理則配置到 NO_PROXY中。

添加完成后,保存即可。

4.刷新更改并重新啟動(dòng) Docker

sudo systemctl daemon-reload
sudo systemctl restart docker

恭喜,Docker Daemon 代理配置完成!

Container - 容器內(nèi)部代理訪問國(guó)外資源

參考 Docker 官方文檔: Configure Docker to use a proxy server

該代理只針對(duì)于后續(xù) build 或 run 的容器有效,已經(jīng)創(chuàng)建好的不受影響。

主要是用于容器內(nèi)部的網(wǎng)絡(luò)訪問。

本身容器就可以當(dāng)做一個(gè)簡(jiǎn)化版的 Linux 系統(tǒng),如果想實(shí)現(xiàn)容器內(nèi)部的代理,則必須在容器內(nèi)設(shè)置適當(dāng)?shù)沫h(huán)境變量。

直接在容器內(nèi)部進(jìn)行修改,雖然也可以這樣做,但是不是很推薦,如果不是測(cè)試使用,最好還是保證容器的完整性。

如果是想要將該容器導(dǎo)出并移植到其他機(jī)器上去的話,那肯定是在容器內(nèi)部修改環(huán)境變量導(dǎo)出。

  • Docker 17.06 及更早版本中,可以在構(gòu)建映像(這會(huì)降低映像的可移植性)或創(chuàng)建或運(yùn)行容器時(shí)通過指定參數(shù)來執(zhí)行此操作。
  • Docker 17.07 及更高版本中,Docker 提供了一個(gè)全局的配置,可以通過配置 Docker 客戶端以自動(dòng)將代理信息傳遞給容器,從而讓所有的容器內(nèi)部都支持代理訪問。

通過參數(shù)配置在這里就不多說了,無非就是命令的使用。這里主要說一下 Docker 17.07 及更高版本中的全局配置:

1.在 Docker 客戶端上,在啟動(dòng)容器的用戶的主目錄中創(chuàng)建或編輯文件 ~/.docker/config.json。 如果沒有該目錄或文件則使用相應(yīng)的用戶來創(chuàng)建。

# 創(chuàng)建目錄
mkdir ~/.docker
# 創(chuàng)建配置文件
touch ~/.docker/config.json
# 編輯配置文件
vim ~/.docker/config.json

根據(jù)自身需要添加下面的內(nèi)容并替換為實(shí)際的配置,一般只需要添加 HTTP_PROXYHTTPS_PROXY 即可:

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

【注】HTTP_PROXY 用于代理訪問 http 請(qǐng)求,HTTPS_PROXY 用于代理訪問 https 請(qǐng)求,如果想某個(gè) IP域名不走代理則配置到 NO_PROXY中。

添加完成后,保存即可。

2.重新啟動(dòng) Docker

sudo systemctl restart docker

恭喜,Container 代理配置完成!

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論