释放小七猫的分享欲

在 AlpineLinux 和 Debian 上配置 Docker 代理

tags: NAS
@ 28/10/2025

在 AlpineLinux 和 Debian 上配置 Docker 代理

docker 默认不走终端代理,因此按照传统的在终端添加 http_proxy 的方法来拉取镜像是行不通的,必须要专门配置 docker 的代理。

这里分别以使用 systemd 的 Debian,和使用 rc 的 Alpine Linux 为例,讲解一下如何设置 docker 代理,他们都是跑容器很常用的发行版。

本文主要由 AI 进行辅助创作,作者进行了整理归纳,请酌情观看。

Debian Linux

Debian 是一款用途广泛功能强大的 Linux 发行版,资源占用比 Alpine 稍大,但它资料和功能齐全,用户量很大。

docker hub 代理

操作 命令
创建配置目录 sudo mkdir -p /etc/systemd/system/docker.service.d
编辑代理配置 sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
重载配置 sudo systemctl daemon-reload
重启 Docker sudo systemctl restart docker
验证 docker info | grep -i proxy
  1. 创建 systemd 代理配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
  1. 写入代理配置(无认证)
[Service]
Environment="HTTP_PROXY=http://[proxy_ip]:7890"
Environment="HTTPS_PROXY=http://[proxy_ip]:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

若代理需要用户名密码,格式为:http://user:pass@host:port

  1. 重载 systemd 并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Alpine Linux

Alpine Linux 常用作轻量化容器系统,由于几乎没有资源占用,非常适合跑 docker。

docker hub 代理

操作 命令
编辑配置 nano /etc/docker/daemon.json
重启服务 rc-service docker restart
验证配置 docker info | grep -i proxy
  1. 编辑 Docker 配置文件:
sudo nano /etc/docker/daemon.json
  1. 添加以下内容(无认证):
{
    "proxies": {
        "http-proxy": "http://[proxy_ip]:7890",
        "https-proxy": "http://[proxy_ip]:7890",
        "no-proxy": "localhost,127.0.0.1"
    }
}
  1. 重启 Docker 服务(Alpine 使用 OpenRC):
sudo rc-service docker restart

验证配置是否生效:

docker info | grep -i proxy

输出中应包含:

HTTP Proxy: http://[proxy_ip]:7890
HTTPS Proxy: http://[proxy_ip]:7890
No Proxy: localhost,127.0.0.1

容器运行时代理

后续部分与 docker 本身有关,与发行版无关。

  1. 临时运行容器时指定代理:
docker run -e HTTP_PROXY="http://[proxy_ip]:7890" \
           -e HTTPS_PROXY="http://[proxy_ip]:7890" \
           -e NO_PROXY="localhost,127.0.0.1" \
           your-image
  1. 持久化配置

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

vim ~/.docker/config.json

添加以下内容:

{
    "proxies": {
        "default": {
            "httpProxy": "http://[proxy_ip]:7890",
            "httpsProxy": "http://[proxy_ip]:7890",
            "noProxy": "localhost,127.0.0.1"
        }
    }
}

构建镜像时代理

如果你需要在构建镜像时使用代理,可以这样:

docker build --build-arg HTTP_PROXY="http://[proxy_ip]:7890" \
             --build-arg HTTPS_PROXY="http://[proxy_ip]:7890" \
             -t your-image .