Docker 设置代理的三种方法
在 Docker 中设置代理是非常常见的需求,尤其是在某些需要通过代理访问外部资源的网络环境下。本文将介绍三种配置 Docker 使用代理的常见方法:通过 daemon.json
配置镜像加速器、通过 daemon.json
配置 HTTP/HTTPS 代理、以及通过 docker.service
配置代理。
方式一 配置 daemon.json
镜像加速器
通过修改 Docker 的配置文件 daemon.json
来配置镜像加速器,可以加速 Docker 镜像的拉取速度,尤其是在国内环境下。操作步骤如下:
-
编辑
/etc/docker/daemon.json
文件:bashsudo vim /etc/docker/daemon.json
-
添加镜像加速器配置:
json{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://ueo0uggy.mirror.aliyuncs.com", "https://docker.m.daocloud.io", "https://cf-workers-docker-io-apl.pages.dev", "http://95.169.25.181" ] }
-
保存并退出编辑器,然后重启 Docker 服务:
bashsudo systemctl restart docker
您可以通过 docker info
命令查看当前 Docker 配置,包括是否成功加载了镜像加速器。
bash
docker info | grep -i 'Registry Mirrors'
如果配置成功,您会看到类似以下的输出:
Registry Mirrors:
https://hub-mirror.c.163.com
https://docker.mirrors.ustc.edu.cn
https://ueo0uggy.mirror.aliyuncs.com
https://docker.m.daocloud.io
https://cf-workers-docker-io-apl.pages.dev
http://95.169.25.181
这表示镜像加速器已经成功配置并生效。
- 拉取镜像进行测试
另一种验证方法是通过拉取一个镜像来检查是否使用了镜像加速器。您可以尝试拉取一个常见的 Docker 镜像,例如 hello-world
:
bash
docker pull hello-world
如果您配置了国内的镜像加速器,并且能够快速完成镜像拉取,那么镜像加速器已经生效。如果拉取速度较慢,可能说明加速器没有生效,您可以再次检查配置或网络环境。
方式二 配置 daemon.json
HTTP/HTTPS 代理
如果需要通过代理访问 Docker 镜像或其他网络资源,可以通过修改 daemon.json
配置 HTTP 和 HTTPS 代理。以下是配置步骤:
-
编辑
/etc/docker/daemon.json
文件:bashsudo vim /etc/docker/daemon.json
-
配置 HTTP 和 HTTPS 代理:
json{ "proxies": { "http-proxy": "http://127.0.0.1:11234", "https-proxy": "http://127.0.0.1:11234" } }
-
保存并退出编辑器,重启 Docker 服务:
bashsudo systemctl restart docker
-
验证代理配置是否生效:
bashdocker info | grep -A 1 ' HTTP Proxy'
输出结果应显示:
WARNING: bridge-nf-call-iptables is disabled HTTP Proxy: http://127.0.0.1:11234 HTTPS Proxy: http://127.0.0.1:11234 WARNING: bridge-nf-call-ip6tables is disabled
方式三 配置 docker.service
代理
另一种配置代理的方法是直接在 Docker 服务的启动配置中设置代理。通过编辑 docker.service
文件来配置 HTTP 和 HTTPS 代理。
配置步骤:
-
查找
docker.service
文件的位置:bashsystemctl status docker
输出中的
Loaded
行会显示docker.service
的路径,例如:Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
-
编辑
docker.service
文件,在[Service]
部分添加代理环境变量:bashsudo vim /lib/systemd/system/docker.service
-
在
[Service]
部分添加如下内容:bash[Service] Environment="HTTP_PROXY=http://127.0.0.1:8490/" Environment="HTTPS_PROXY=http://127.0.0.1:8490/"
-
保存并退出编辑器,重载
docker.service
配置并重启 Docker 服务:bashsudo systemctl daemon-reload sudo systemctl restart docker
-
如果需要查看 Docker 启动日志,可以使用以下命令:
bashsudo journalctl -u docker.service
通过这三种方法,您可以轻松地为 Docker 配置代理,帮助您更好地管理镜像拉取和容器网络访问。选择适合您的方式进行配置,以便在使用 Docker 时更加高效、便捷。