最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker設置代理以及配置鏡像加速方式

 更新時間:2025年08月17日 17:19:08   作者:vortex5  
proxychains無法代理Docker?Daemon的網(wǎng)絡請求,因其獨立運行且依賴自身配置(如HTTP_PROXY環(huán)境變量或daemon.json),需通過Docker原生代理設置或國內(nèi)鏡像加速器解決,前者需配置守護進程或容器環(huán)境變量,后者提升拉取速度但穩(wěn)定性可能受限

為什么proxychains對docker無效?

在使用 proxychains 嘗試讓 docker pull 通過代理拉取鏡像時,常常發(fā)現(xiàn)代理并未生效,拉取速度依然很慢。其根本原因在于 Docker 的架構(gòu)和 proxychains 的工作機制不兼容。

以下是詳細的底層原理分析:

Docker 的運行機制

  • Docker 客戶端通過命令行工具(如 docker pull)與 Docker Daemon 通信,后者負責實際的鏡像拉取、推送等操作。
  • Docker Daemon 是一個獨立的守護進程,通常由 systemd 管理,運行在宿主機上,而不是直接在用戶終端環(huán)境中運行。
  • proxychains 是一個基于動態(tài)鏈接庫(如 LD_PRELOAD)的代理工具,它通過攔截應用程序的網(wǎng)絡請求來強制走代理。然而,proxychains 僅對直接運行在用戶終端環(huán)境下的進程有效,無法影響 Docker Daemon 的網(wǎng)絡行為。

為何 proxychains 不生效

  • 當執(zhí)行 proxychains docker pull 時,proxychains 僅代理了 docker 客戶端命令的網(wǎng)絡請求,而 Docker Daemon 的實際網(wǎng)絡操作(如拉取鏡像)并未經(jīng)過 proxychains 的攔截。
  • Docker Daemon 的網(wǎng)絡請求由其自身的配置決定(如 HTTP_PROXY 環(huán)境變量或 daemon.json 設置),而非用戶終端的環(huán)境變量。
  • 因此,proxychains 無法直接控制 Docker Daemon 的網(wǎng)絡行為,導致 docker pull 不走代理。

解決思路

  • 要讓 docker pull 使用代理,必須通過 Docker 自身的代理配置機制,設置 Docker Daemon 的環(huán)境變量。
  • 對于 docker builddocker run,需要分別配置容器構(gòu)建或運行時的代理環(huán)境變量。
  • 如果需要使用 socks5 代理(如 proxychains 常用的代理類型),需將 socks5 轉(zhuǎn)換為 http 代理(如通過 polipo),因為 Docker 目前僅支持 http、httpsftp 協(xié)議的代理。

國內(nèi)鏡像加速方案

在國內(nèi)訪問 Docker Hub 速度較慢時,可以通過配置鏡像加速器來提升 docker pull 的速度。以下是具體步驟:

配置國內(nèi)鏡像加速器

編輯 /etc/docker/daemon.json 文件,添加鏡像加速地址:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

其他可選的鏡像加速服務包括:

保存后重啟 Docker 服務:

sudo systemctl daemon-reload
sudo systemctl restart docker

注意事項

  • 2024 年 6 月以來,國內(nèi)鏡像站的穩(wěn)定性可能存在波動,建議測試多個鏡像地址,選擇效果最佳的。
  • 如果鏡像加速器不可用或速度不理想,可直接配置代理訪問 Docker Hub。

設置 Docker 代理的幾種方案

以下是針對 docker pull、docker push、docker builddocker run 的代理設置方法,適用于 Docker 17.07 及以上版本。

1. 為docker pull和docker push設置代理

由于 docker pulldocker push 的網(wǎng)絡請求由 Docker Daemon 直接處理,需通過 systemd 配置 Docker Daemon 的環(huán)境變量。

步驟

創(chuàng)建 systemd 配置文件目錄:

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

創(chuàng)建代理配置文件:

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

添加以下內(nèi)容:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8123"
Environment="HTTPS_PROXY=http://127.0.0.1:8123"
  • 這里的 127.0.0.1:8123 是宿主機的 HTTP 代理地址和端口,需根據(jù)實際代理服務配置。
  • 如果使用 socks5 代理,需通過工具(如 polipo)將其轉(zhuǎn)換為 HTTP 代理。

應用配置并重啟 Docker 服務:

sudo systemctl daemon-reload
sudo systemctl restart docker

驗證環(huán)境變量是否生效:

sudo systemctl show --property=Environment docker

輸出應包含配置的 HTTP_PROXYHTTPS_PROXY 變量。

注意

  • 代理設置僅對 Docker Daemon 的網(wǎng)絡請求生效(如 docker pulldocker push)。
  • 如果代理地址發(fā)生變化,需重新編輯配置文件并重啟服務。
  • 確認代理服務支持 httphttps 協(xié)議,Docker 不支持直接使用 socks5。

2. 為docker build設置代理

docker build 的代理設置需要在構(gòu)建鏡像時通過 --build-arg 參數(shù)傳遞代理環(huán)境變量。

方法

1.使用 --build-arg 參數(shù)指定代理:

docker build --build-arg http_proxy=http://172.17.0.1:8123 \
             --build-arg https_proxy=http://172.17.0.1:8123 \
             -t image_name .
  • 默認情況下,Docker 使用 bridge 網(wǎng)絡模式,容器無法直接訪問宿主機的 127.0.0.1。因此,需使用 Docker 默認網(wǎng)橋 docker0 的 IP 地址(通常為 172.17.0.1)。
  • 確認代理地址是宿主機上的 HTTP 代理服務地址。

2.使用 --network=host 模式:

如果在構(gòu)建時指定 --network=host,容器將與宿主機共享網(wǎng)絡,可直接使用 127.0.0.1

docker build --network=host \
             --build-arg http_proxy=http://127.0.0.1:8123 \
             --build-arg https_proxy=http://127.0.0.1:8123 \
             -t image_name .

注意

  • 代理設置僅在構(gòu)建過程中生效,構(gòu)建完成的鏡像不會自動繼承這些環(huán)境變量。
  • 如果 Dockerfile 中需要訪問外部網(wǎng)絡(如下載依賴),需確保代理地址有效。

3. 為docker run設置代理(全局配置方式)

Docker 17.07 及以上版本支持通過 ~/.docker/config.json 配置全局代理,適用于 docker builddocker run 創(chuàng)建的容器。

步驟

編輯 ~/.docker/config.json

vim ~/.docker/config.json

添加以下內(nèi)容:

{
  "proxies": {
    "default": {
      "httpProxy": "http://172.17.0.1:8123",
      "httpsProxy": "http://172.17.0.1:8123",
      "noProxy": "localhost,127.0.0.1,.daocloud.io"
    }
  }
}
  • httpProxyhttpsProxy:指定代理地址,默認網(wǎng)橋模式下使用 172.17.0.1。
  • noProxy:設置不需要走代理的地址,防止本地通信被代理攔截。

生效方式

  • 配置保存后,Docker 會自動應用代理設置到新創(chuàng)建的容器,無需重啟服務。
  • 新創(chuàng)建的容器會繼承 http_proxy、https_proxyno_proxy 環(huán)境變量。

注意

如果容器無需使用代理,可在容器內(nèi)清空環(huán)境變量:

export http_proxy=""
export https_proxy=""
  • 一旦 config.json 存在,所有新創(chuàng)建的容器都會默認使用配置的代理。若需禁用代理,可臨時重命名或刪除 config.json
  • 容器創(chuàng)建時的代理設置會被“固化”到容器中,即使后續(xù)修改 config.json,已有容器的代理設置不會改變。

4. 容器內(nèi)使用宿主機代理的多種方法

以下方法適用于在容器運行時(docker run)使用宿主機的代理服務。

方法一:在容器內(nèi)手動設置代理(推薦)

在容器內(nèi)設置環(huán)境變量:

export ALL_PROXY="socks5://172.17.0.1:1080"
  • 使用 172.17.0.1 訪問宿主機的代理服務(默認 bridge 模式)。
  • 如果代理是 socks5,需確保容器內(nèi)的工具支持 socks5 協(xié)議,或通過 polipo 轉(zhuǎn)換為 HTTP 代理。

方法二:使用--network=host共享宿主機網(wǎng)絡

創(chuàng)建容器時使用 --network=host

docker run --network=host -it image_name bash

在容器內(nèi)設置代理:

export ALL_PROXY="socks5://127.0.0.1:1080"
  • 注意--network=host 會使容器與宿主機共享網(wǎng)絡,-p 端口映射參數(shù)將失效,所有端口直接暴露。

方法三:映射代理端口

創(chuàng)建容器時映射宿主機的代理端口:

docker run -p 1080:1080 -it image_name bash

在容器內(nèi)設置代理:

export ALL_PROXY="socks5://127.0.0.1:1080"
  • 適用于需要精確控制端口映射的場景。

方法四:通過全局代理配置(參考第 3 節(jié))

  • 使用 ~/.docker/config.json 配置全局代理,容器創(chuàng)建時會自動繼承代理環(huán)境變量。
  • 注意:全局代理與 --network=host 不建議同時使用,可能導致網(wǎng)絡配置沖突。

注意事項與常見問題

協(xié)議支持

  • Docker 目前僅支持 httphttpsftp 協(xié)議的代理,不支持 socks5。如需使用 socks5,可通過 polipo 轉(zhuǎn)換為 HTTP 代理(參考:https://neucrack.com/p/275)。
  • 未來 Docker 可能支持更多協(xié)議,建議參考官方文檔:https://docs.docker.com/network/proxy/

IP 地址選擇

  • 默認 bridge 模式下,容器訪問宿主機代理需使用 docker0 網(wǎng)橋的 IP(如 172.17.0.1)。
  • 使用 --network=host 模式時,可直接使用 127.0.0.1

代理配置的持久性

  • 全局代理配置(config.json)會影響所有新創(chuàng)建的容器,需謹慎管理。
  • 容器創(chuàng)建后,代理環(huán)境變量會被“固化”。若需更改,需在容器內(nèi)手動重新設置。

調(diào)試代理問題

  • 檢查 Docker Daemon 的環(huán)境變量:sudo systemctl show --property=Environment docker
  • 驗證容器內(nèi)的代理設置:env | grep -i proxy。
  • 確保代理服務正常運行,且端口未被防火墻攔截。

總結(jié)

  • 為什么不用 proxychainsproxychains 無法代理 Docker Daemon 的網(wǎng)絡請求,需通過 Docker 自身的機制設置代理。
  • 國內(nèi)鏡像加速:簡單有效,但穩(wěn)定性可能受限。

代理設置方案

  • docker pull/push:通過 systemd 配置 Docker Daemon 的代理。
  • docker build:通過 --build-arg--network=host 設置代理。
  • docker run:通過全局配置(config.json)或容器內(nèi)手動設置代理。

推薦做法

  • 優(yōu)先使用國內(nèi)鏡像加速器;若需代理,推薦全局配置(config.json)或手動設置環(huán)境變量,靈活性更高。

如需更多細節(jié),請參考 Docker 官方文檔:https://docs.docker.com/network/proxy/ 

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

相關文章

  • docker里面不能使用vim的問題及解決

    docker里面不能使用vim的問題及解決

    這篇文章主要介紹了docker里面不能使用vim的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • docker-compose部署coredns如何實現(xiàn)自建DNS服務

    docker-compose部署coredns如何實現(xiàn)自建DNS服務

    本文介紹了如何在內(nèi)網(wǎng)中使用自建的CoreDNS服務進行域名解析,通過配置Corefile和hosts文件,實現(xiàn)內(nèi)部域名解析,無需在互聯(lián)網(wǎng)上注冊域名,使用docker-compose運行CoreDNS,并通過修改resolv.conf文件配置DNS服務
    2025-01-01
  • 詳解使用阿里云鏡像倉庫構(gòu)建國外Docker鏡像

    詳解使用阿里云鏡像倉庫構(gòu)建國外Docker鏡像

    這篇文章主要介紹了詳解使用阿里云鏡像倉庫構(gòu)建國外Docker鏡像,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Docker安裝ElasticSearch和Kibana的問題及處理方法

    Docker安裝ElasticSearch和Kibana的問題及處理方法

    這篇文章主要介紹了Docker安裝ElasticSearch和Kibana的問題及遇到問題解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 查看docker中運行的JVM參數(shù)問題及解決方法

    查看docker中運行的JVM參數(shù)問題及解決方法

    這篇文章主要介紹了查看docker中運行的JVM參數(shù),方法一使用的是jcmd命令,方法二是jinfo命令,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2022-04-04
  • docker?安裝?zeppeline的操作

    docker?安裝?zeppeline的操作

    Zeppelin是基于Jupyter Notebook技術(shù)開發(fā)的大數(shù)據(jù)交互分析服務軟件。接下來通過本文給大家介紹docker?安裝?zeppeline的相關知識,感興趣的朋友一起看看吧
    2022-01-01
  • docker-compose基于MySQL8部署項目的實現(xiàn)

    docker-compose基于MySQL8部署項目的實現(xiàn)

    這篇文章主要介紹了docker-compose基于MySQL8部署項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • dubbo服務引用創(chuàng)建Invoker代理對象

    dubbo服務引用創(chuàng)建Invoker代理對象

    這篇文章主要為大家介紹了dubbo服務引用創(chuàng)建Invoker代理對象示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Docker Swarm結(jié)合Docker Compose部署集群的實現(xiàn)

    Docker Swarm結(jié)合Docker Compose部署集群的實現(xiàn)

    本文主要介紹了Docker Swarm結(jié)合Docker Compose部署集群的實現(xiàn),通過部署和配置幫助讀者更好地理解并應用這些工具,感興趣的可以了解一下
    2023-12-12
  • 詳解docker中Dockerfile指令創(chuàng)建鏡像

    詳解docker中Dockerfile指令創(chuàng)建鏡像

    這篇文章主要介紹了詳解docker中Dockerfile指令創(chuàng)建鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

大关县| 望江县| 松桃| 陆丰市| 安平县| 涟源市| 兴仁县| 衡阳市| 凯里市| 舟曲县| 兴业县| 正镶白旗| 长寿区| 毕节市| 宿州市| 洛南县| 介休市| 昭平县| 凤城市| 鹿泉市| 临汾市| 武夷山市| 德江县| 武冈市| 涪陵区| 南投市| 民乐县| 南昌县| 崇文区| 额敏县| 丰宁| 师宗县| 红桥区| 揭阳市| 邓州市| 渑池县| 安丘市| 天镇县| 宜阳县| 登封市| 交口县|