Docker 设置代理的三种方法(2024年12月19日亲自测试)

Docker 设置代理的三种方法

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

方式一 配置 daemon.json 镜像加速器

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

  1. 编辑 /etc/docker/daemon.json 文件:

    bash 复制代码
    sudo vim /etc/docker/daemon.json
  2. 添加镜像加速器配置:

    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"
      ]
    }
  3. 保存并退出编辑器,然后重启 Docker 服务:

    bash 复制代码
    sudo 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

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

  1. 拉取镜像进行测试

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

bash 复制代码
docker pull hello-world

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

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

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

  1. 编辑 /etc/docker/daemon.json 文件:

    bash 复制代码
    sudo vim /etc/docker/daemon.json
  2. 配置 HTTP 和 HTTPS 代理:

    json 复制代码
    {
      "proxies": {
        "http-proxy": "http://127.0.0.1:11234",
        "https-proxy": "http://127.0.0.1:11234"
      }
    }
  3. 保存并退出编辑器,重启 Docker 服务:

    bash 复制代码
    sudo systemctl restart docker
  4. 验证代理配置是否生效:

    bash 复制代码
    docker 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 代理。

配置步骤:

  1. 查找 docker.service 文件的位置:

    bash 复制代码
    systemctl status docker

    输出中的 Loaded 行会显示 docker.service 的路径,例如:

    复制代码
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  2. 编辑 docker.service 文件,在 [Service] 部分添加代理环境变量:

    bash 复制代码
    sudo vim /lib/systemd/system/docker.service
  3. [Service] 部分添加如下内容:

    bash 复制代码
    [Service]
    Environment="HTTP_PROXY=http://127.0.0.1:8490/"
    Environment="HTTPS_PROXY=http://127.0.0.1:8490/"
  4. 保存并退出编辑器,重载 docker.service 配置并重启 Docker 服务:

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  5. 如果需要查看 Docker 启动日志,可以使用以下命令:

    bash 复制代码
    sudo journalctl -u docker.service

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

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心2 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing2 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)2 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang2 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github