闲时
  • 首页
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的技术记录 主题 OneBlog

    我的技术闲时记录

    搜索
    标签
    # AIGC # SSL # CDN # 学习 # 土力学 # 脚本 # 备份 # 数据库 # 群晖 # FFmpeg
  • 首页>
  • Linux>
  • 正文
  • 为Docker配置代理服务器

    2026年03月09日 619 阅读 0 评论 2502 字

    修改 Docker 的代理设置主要有三种场景,可以根据需求选择合适的方法。

    💻 场景一:为 Docker 守护进程设置代理(最常用)

    当你遇到 docker pull 无法拉取镜像,或 docker build 无法下载基础镜像时,通常是 Docker 后台守护进程(daemon)需要配置代理。它负责与镜像仓库(如 Docker Hub)通信。

    对于使用 systemd 管理服务的 Linux 系统(如 Ubuntu、CentOS 7+、Debian),推荐通过创建配置文件来设置。

    1. 创建配置文件目录(如果不存在):

      sudo mkdir -p /etc/systemd/system/docker.service.d
      
    2. 创建并编辑代理配置文件: 使用文本编辑器创建一个 http-proxy.conf 文件:

      sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
      
    3. 填入代理配置: 根据你的代理服务器类型,将以下内容粘贴进去(请将 proxy.example.com:3128 替换为你的实际地址和端口):

      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:3128"
      Environment="HTTPS_PROXY=http://proxy.example.com:3128"
      Environment="NO_PROXY=localhost,127.0.0.1,.local,*.example.com"
      
      • NO_PROXY:非常重要!请在此处添加你公司内网的域名或 IP,告知 Docker 这些地址不走代理,避免内网访问故障。
      • SOCKS代理:如果你的代理是 SOCKS5 协议,可以这样写:Environment="HTTP_PROXY=socks5://127.0.0.1:1080"。
    4. 重新加载配置并重启 Docker:

      sudo systemctl daemon-reload
      sudo systemctl restart docker
      
    5. 验证配置是否生效:

      sudo systemctl show --property=Environment docker
      

      如果输出显示了刚才设置的变量,就说明配置成功了。

    📦 场景二:为 Docker 客户端设置代理(影响容器内部)

    如果你希望所有新启动的容器内部都能自动使用代理环境变量,可以通过修改 Docker 客户端的配置文件来实现。这种方式不影响 docker pull,只影响容器。

    1. 编辑(或创建)~/.docker/config.json 文件:

      vi ~/.docker/config.json
      
    2. 添加或修改 proxies 字段:

      {
        "proxies": {
          "default": {
            "httpProxy": "http://proxy.example.com:3128",
            "httpsProxy": "https://proxy.example.com:3129",
            "noProxy": "localhost,127.0.0.1,.example.com"
          }
        }
      }
      

      保存文件后,无需重启 Docker,后续新建的容器都会自动包含这些环境变量。

    ⚙️ 场景三:临时或针对特定任务设置代理

    • 运行单个容器时指定: 使用 docker run 的 -e 或 --env 参数,只为这一个容器设置代理:

      docker run -it --env HTTP_PROXY="http://proxy.example.com:3128" --env HTTPS_PROXY="http://proxy.example.com:3128" ubuntu bash
      
    • 构建镜像时指定: 在 docker build 过程中使用 --build-arg 传递代理,这样在构建镜像时(如下载依赖包)就可以使用代理:

      docker build --build-arg HTTP_PROXY="http://proxy.example.com:3128" --build-arg HTTPS_PROXY="http://proxy.example.com:3128" -t your-image .
      

    ✅ 如何选择配置方式?

    • 如果你遇到的是 docker pull 拉取镜像失败,请使用方法一(守护进程配置)。
    • 如果你希望容器启动后自动继承代理,请使用方法二(客户端配置)。
    • 如果只是偶尔需要,用**方法三(临时指定)**最方便。

    由 AI 生成

    本文著作权归作者 [ HORiZON ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    AIGCDocker代理
    Linux
    — END —
    首页归档
    由 Typecho 驱动  已运行 2168 天
    豫ICP备2022003436号-1
    OneBlog   0.098 s
    深色
    OneBlog主题  Load 0.098 sCopyRight © 2026 HORiZON. All Rights Reserved

    开源不易,请尊重作者版权,保留基本的版权信息。