Docker 设置代理的三种方法

在 Docker 中设置代理是非常常见的需求,尤其是在某些需要通过代理访问外部资源的网络环境下。本文将介绍三种配置 Docker 使用代理的常见方法:通过 daemon.json 配置镜像 加速器 、通过 daemon.json 配置 HTTP /HTTPS 代理、以及通过 docker.service 配置代理。

方式零 就是不配置代理,使用网友大佬开发的代理脚本(2025年02月08日更新)

妈妈再也不用担心下载不到docker Hub 上的镜像了:

1
2
bash -c "$(curl -sSLf https://xy.ggbond.org/xy/docker_pull.sh)" -s 参数1:完整镜像名 参数2:代理文件路径(可选项)
1

说明:
代理文件路径是指存放docker_mirrors.txt文件的目录,如果不填写默认创建/etc/xiaoya目录,并自动在该目录生成docker_mirrors.txt文件。
docker_mirrors.txt文件每行一个代理镜像点,越排在上方的优先级越高,脚本会自动将上一次成功下载的代理点排序在第一位。
如果要手动添加与使用自定义的代理镜像点,只需要在第一行填上地址即可。

示例:

1
2
bash -c "$(curl -sSLf https://xy.ggbond.org/xy/docker_pull.sh)" -s grafana/loki:2.8.0 /tmp/
1

方式一 配置 daemon.json 镜像加速器 (适合入门对下载速度无要求)

通过修改 Docker 的配置文件 daemon.json 来配置镜像加速器,可以加速 Docker 镜像 的拉取速度,尤其是在国内环境下。操作步骤如下:

  1. 编辑 /etc/docker/daemon.json 文件:
    1
    2
    sudo vim /etc/docker/daemon.json
    1
  2. 添加镜像加速器配置:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
    "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",
    ]
    }
    12345678910
  3. 保存并退出编辑器,然后重启 Docker 服务:
    1
    2
    sudo systemctl restart docker
    1

您可以通过 docker info 命令查看当前 Docker 配置,包括是否成功加载了镜像加速器。

1
2
sudo docker info | grep -i 'Registry Mirrors'
1

如果配置成功,您会看到类似以下的输出:

1
2
3
4
5
6
7
8
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

1234567

这表示镜像加速器已经成功配置并生效。

  1. 拉取镜像进行测试

另一种验证方法是通过拉取一个镜像来检查是否使用了镜像加速器。您可以尝试拉取一个常见的 Docker 镜像,例如 hello-world

1
2
sudo docker pull hello-world
1

如果您配置了国内的镜像加速器,并且能够快速完成镜像拉取,那么镜像加速器已经生效。如果拉取速度较慢,可能说明加速器没有生效,您可以再次检查配置或网络环境。

方式二 配置 daemon.json HTTP/HTTPS 代理

如果需要通过代理访问 Docker 镜像或其他网络资源,可以通过修改 daemon.json 配置 HTTP 和 HTTPS 代理。以下是配置步骤:

  1. 编辑 /etc/docker/daemon.json 文件:
    1
    2
    sudo vim /etc/docker/daemon.json
    1
  2. 配置 HTTP 和 HTTPS 代理:
    1
    2
    3
    4
    5
    6
    7
    {
    "proxies": {
    "http-proxy": "http://127.0.0.1:7890",
    "https-proxy": "http://127.0.0.1:7890"
    }
    }
    123456
  3. 保存并退出编辑器,重启 Docker 服务:
    1
    2
    sudo systemctl restart docker
    1
  4. 验证代理配置是否生效:
    1
    2
    sudo docker info | grep -A 1 ' HTTP Proxy'
    1
    输出结果应显示:
    1
    2
    3
    4
    5
    WARNING: bridge-nf-call-iptables is disabled
    HTTP Proxy: http://127.0.0.1:7890
    HTTPS Proxy: http://127.0.0.1:7890
    WARNING: bridge-nf-call-ip6tables is disabled
    1234

方式三 配置 docker.service 代理 (进阶使用,使用效果同方法二 )

另一种配置代理的方法是直接在 Docker 服务的启动配置中设置代理。通过编辑 docker.service 文件来配置 HTTP 和 HTTPS 代理。

配置步骤:

  1. 查找 docker.service 文件的位置:
    1
    2
    sudo systemctl status docker
    1
    输出中的 Loaded 行会显示 docker.service 的路径,例如:
    1
    2
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
    1
  2. 编辑 docker.service 文件,在 [Service] 部分添加代理环境变量:
    1
    2
    sudo vim /lib/systemd/system/docker.service
    1
  3. [Service] 部分添加如下内容:
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://127.0.0.1:7890/"
    Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
    123
  4. 保存并退出编辑器,重载 docker.service 配置并重启 Docker 服务:
    1
    2
    3
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    12
  5. 如果需要查看 Docker 启动日志,可以使用以下命令:
    1
    2
    sudo journalctl -u docker.service
    1

通过这三种方法,您可以轻松地为 Docker 配置代理,帮助您更好地管理镜像拉取和容器网络访问。选择适合您的方式进行配置,以便在使用 Docker 时更加高效、便捷。

实付 元

使用余额支付

点击重新获取

扫码支付

钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

举报

点击体验
DeepSeekR1满血版
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回顶部

AutoCopy