在 AlpineLinux 和 Debian 上配置 Docker 代理
tags: NAS
@
在 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 |
- 创建 systemd 代理配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
- 写入代理配置(无认证)
[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
- 重载 systemd 并重启 Docker
sudo systemctl daemon-reload sudo systemctl restart dockerAlpine Linux
Alpine Linux 常用作轻量化容器系统,由于几乎没有资源占用,非常适合跑 docker。
docker hub 代理
操作 命令 编辑配置 nano /etc/docker/daemon.json重启服务 rc-service docker restart验证配置 docker info | grep -i proxy
- 编辑 Docker 配置文件:
sudo nano /etc/docker/daemon.json
- 添加以下内容(无认证):
{ "proxies": { "http-proxy": "http://[proxy_ip]:7890", "https-proxy": "http://[proxy_ip]:7890", "no-proxy": "localhost,127.0.0.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 本身有关,与发行版无关。
- 临时运行容器时指定代理:
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
- 持久化配置
编辑(或创建)文件
~/.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 .