<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Docker 代理配置的迷思:為什么 127.0.0.1 不總是本地?

      在使用 Docker 時(shí)配置代理是一個(gè)常見的需求,但很多開發(fā)者都會(huì)遇到一個(gè)令人困惑的現(xiàn)象:明明代理服務(wù)運(yùn)行在本機(jī),使用 127.0.0.1 卻無(wú)法正常工作。本文將深入探討這個(gè)問(wèn)題背后的原理。

      問(wèn)題現(xiàn)象

      讓我們先看兩個(gè)相似的命令,它們只有代理地址不同:

      命令一(正常工作)

      bash
      http_proxy=http://host.docker.internal:33210 https_proxy=http://host.docker.internal:33210 docker pull postgres:17

      命令二(失敗)

      bash
      http_proxy=http://127.0.0.1:33210 https_proxy=http://127.0.0.1:33210 docker pull postgres:17

      第二個(gè)命令會(huì)報(bào)錯(cuò):

      text
      Error response from daemon: Head "https://registry-1.docker.io/v2/library/postgres/manifests/17": received unexpected HTTP status: 503 Service Unavailable

      根本原因:Docker 架構(gòu)解析

      要理解這個(gè)問(wèn)題,我們需要了解 Docker 的架構(gòu):

      Docker 的雙進(jìn)程模型

      • Docker CLI:用戶直接交互的命令行工具,運(yùn)行在用戶空間

      • Docker Daemon:后臺(tái)服務(wù)進(jìn)程,負(fù)責(zé)實(shí)際的容器管理、鏡像拉取等核心操作

      網(wǎng)絡(luò)命名空間隔離

      當(dāng)您執(zhí)行 docker pull 時(shí):

      1. Docker CLI 接收命令并通過(guò) socket 傳遞給 Docker Daemon

      2. 實(shí)際的鏡像下載由 Docker Daemon 執(zhí)行

      3. Docker Daemon 運(yùn)行在獨(dú)立的網(wǎng)絡(luò)上下文中

      網(wǎng)絡(luò)視角深入分析

      為什么 127.0.0.1 失效?

      當(dāng)您配置 http_proxy=http://127.0.0.1:33210 時(shí):

      • Docker Daemon 在自己的網(wǎng)絡(luò)命名空間中解析 127.0.0.1

      • 這個(gè)地址指向 Daemon 自己的回環(huán)接口,而不是宿主機(jī)的回環(huán)接口

      • 您的代理服務(wù)運(yùn)行在宿主機(jī)用戶空間,Daemon 無(wú)法訪問(wèn)

      • 結(jié)果:連接失敗

      為什么 host.docker.internal 有效?

      host.docker.internal 是 Docker 的特殊 DNS 名稱:

      • 它解析到宿主機(jī)的 IP 地址

      • 為 Docker Daemon 提供了訪問(wèn)宿主機(jī)服務(wù)的正確路由路徑

      • Daemon 可以通過(guò)這個(gè)地址連接到運(yùn)行在宿主機(jī)上的代理服務(wù)

      驗(yàn)證實(shí)驗(yàn)

      實(shí)驗(yàn) 1:查看網(wǎng)絡(luò)命名空間

      bash
      # 查看 Docker Daemon 的進(jìn)程 ID
      ps aux | grep dockerd
      
      # 進(jìn)入 Daemon 的網(wǎng)絡(luò)命名空間
      sudo nsenter -t $(pgrep dockerd) -n ip addr
      
      # 你會(huì)看到 Daemon 有自己的網(wǎng)絡(luò)接口配置

      實(shí)驗(yàn) 2:測(cè)試網(wǎng)絡(luò)連通性

      bash
      # 從容器內(nèi)部測(cè)試 127.0.0.1
      docker run --rm alpine wget -O- http://127.0.0.1:33210
      
      # 從容器內(nèi)部測(cè)試 host.docker.internal  
      docker run --rm alpine wget -O- http://host.docker.internal:33210

      解決方案

      方案 1:使用 host.docker.internal(推薦)

      bash
      # 臨時(shí)使用
      http_proxy=http://host.docker.internal:33210 https_proxy=http://host.docker.internal:33210 docker pull postgres:17
      
      # 設(shè)置為環(huán)境變量
      export http_proxy=http://host.docker.internal:33210
      export https_proxy=http://host.docker.internal:33210
      docker pull postgres:17

      方案 2:配置 Docker 系統(tǒng)級(jí)代理

      bash
      # 創(chuàng)建代理配置目錄
      sudo mkdir -p /etc/systemd/system/docker.service.d
      
      # 創(chuàng)建代理配置文件
      sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
      [Service]
      Environment="HTTP_PROXY=http://127.0.0.1:33210"
      Environment="HTTPS_PROXY=http://127.0.0.1:33210"
      Environment="NO_PROXY=localhost,127.0.0.1,.docker.internal"
      EOF
      
      # 重新加載并重啟 Docker
      sudo systemctl daemon-reload
      sudo systemctl restart docker

      方案 3:使用宿主機(jī)的真實(shí) IP

      bash
      # 獲取宿主機(jī) IP
      HOST_IP=$(ip route | grep default | awk '{print $3}')
      
      # 使用宿主機(jī) IP 作為代理地址
      http_proxy=http://${HOST_IP}:33210 https_proxy=http://${HOST_IP}:33210 docker pull postgres:17

      最佳實(shí)踐

      1. 開發(fā)環(huán)境:使用 host.docker.internal

      2. 生產(chǎn)環(huán)境:配置明確的代理服務(wù)器地址,避免使用回環(huán)地址

      3. Docker Compose:在 docker-compose.yml 中配置代理環(huán)境變量

        yaml
        services:
          app:
            environment:
              - HTTP_PROXY=http://host.docker.internal:33210
              - HTTPS_PROXY=http://host.docker.internal:33210
      4. 構(gòu)建鏡像時(shí):在 Dockerfile 中適當(dāng)配置代理

        dockerfile
        FROM alpine
        ARG HTTP_PROXY
        ARG HTTPS_PROXY
        # 使用構(gòu)建參數(shù)配置構(gòu)建時(shí)的代理

      總結(jié)

      理解 Docker 代理配置的關(guān)鍵在于認(rèn)識(shí)到:

      • Docker CLI 和 Docker Daemon 是不同的進(jìn)程

      • Docker Daemon 運(yùn)行在獨(dú)立的網(wǎng)絡(luò)上下文中

      • 127.0.0.1 在 Docker 上下文中具有不同的含義

      • host.docker.internal 提供了正確的網(wǎng)絡(luò)路由路徑

      掌握這些概念后,您就能輕松解決 Docker 網(wǎng)絡(luò)代理相關(guān)的各種問(wèn)題,讓容器化開發(fā)更加順暢。

      posted @ 2025-10-20 17:29  若-飛  閱讀(43)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 无码粉嫩虎白一线天在线观看| 黑人大群体交免费视频| 欲色欲色天天天www| 色伦专区97中文字幕| 国产精品99久久免费| 国产精品熟女一区二区三区| 欧美人与动zozo| 熟妇无码熟妇毛片| 色综合色综合色综合久久| 国语精品一区二区三区| 成人一区二区不卡国产| 国产怡春院无码一区二区| 日本福利一区二区精品| 久久国产免费观看精品3| 久久av色欲av久久蜜桃网| 9久久伊人精品综合| 亚洲日本精品国产第一区| 中文字幕久久久久人妻| 国产一区精品综亚洲av| 国精产品999国精产| 成人国产亚洲精品天堂av| 国产av一区二区不卡| 一区二区三区鲁丝不卡| 日韩高清亚洲日韩精品一区二区| 亚洲日韩精品无码一区二区三区| 久久夜色撩人精品国产av| 亚洲av在线观看| 亚洲精品久久久蜜桃| 日韩精品成人一区二区三区| 国产精品女同性一区二区| 亚洲一本二区偷拍精品| 国产AV影片麻豆精品传媒| 乱码精品一区二区亚洲区| gogogo高清在线播放免费| 韩国无码av片在线观看| 夜夜躁狠狠躁日日躁| 深夜福利资源在线观看| 国产亚洲精品自在久久vr| 免费人成黄页在线观看国产| 天干天干啦夜天干天2017 | 欧美老熟妇乱子伦牲交视频|