Docker与魔法🪄

[!note]

下面的教程是在Linux环境下进行的。

1. 背景

因为Docker 官方源很早之前就被官方封禁了,国内拉取 Docker 镜像必须依赖国内镜像源:比如网易、中科大、阿里等。

但是有时候我们发现,即使搭配上了国内的镜像源加速,有时候也拉取的很慢,甚至有些镜像换了国内源也会拉取失败

拉取情况

本文,将为Docker配置上魔法(代理或🪜),从根本上解决Docker镜像拉取问题,让其享受飞一般的拉取速度。

2. 准备工作

  1. Docker环境
  2. 魔法、代理、🪜相关的资产
  3. Linux上使用的魔法的相关工具,例如clash-for-linuxclash-for-linux项目地址

[!caution]

必须保证你的Linux系统上,是开着代理的。

3. 为Docker配置代理

3.1 修改Docker镜像加速文件

根据自己系统中Docker镜像加速文件文件的路径,默认的位置在/etc/docker/daemon.json

修改Docker的daemon.json文件 ,配置内容为下文,没有则新建:

{
  "registry-mirrors": [
    "https://hub.docker.com/"
  ]
}

3.2 修改Docker服务文件

docker服务的默认代理配置文件位置如下:/etc/systemd/system/docker.service.d/proxy.conf

如果你的不知道文件在哪,可以直接执行如下命令查看:

systemctl show -p FragmentPath docker.service

Docker服务位置

之后,修改你的docker.service文件,然后在service下面加入代理的配置:

[Service]
Environment="HTTP_PROXY=http://XXX:7890"
Environment="HTTPS_PROXY=http://XXX:7890"

这里分别给到HTTPHTTPS的代理配置,如果你的代理绑定了域名,那么就给域名即可,如果没有绑定域名,直接给到代理IP即可,后面的是代理的端口号,默认都是7890,如果你要改,那么要和自己的代理一起改掉。

由于我的代理和Docker服务都在同一台机器,所以我这里的配置如图:

编辑docker.service文件

3.3 加载配置、重启docker

  1. 加载配置

    systemctl daemon-reload
    
  2. 重启docker

    systemctl restart docker
    
  3. 查看代理配置是否生效

    systemctl show --property=Environment docker
    

    如果生效了,那么将会打印如下内容:

    Environment=HTTP_PROXY=http://XXX:7892 HTTPS_PROXY=http://XXX:7892
    

    生效结果

4. 校验结果

配置代理之前:

配置代理之前的拉取情况

配置代理之后:

配置代理之后的拉取情况

可见速度显著提升!