docker镜像下载加速

由于docker hub服务器部署在国外,通过国内直接访问可能会出现无法访问或者访问过慢的问题,我们可以通过以下两种方式加速下载。

使用第三方加速

我们可以通过使用阿里云镜像加速服务器来加快我们的下载速度

一、首先,访问阿里镜像加速服务器,使用账户密码登陆后会获取到加速地址,如:https://3cassqq.mirror.aliyuncs.com

二、在docker的宿主机上修改/etc/docker/daemin.json文件

1
2
3
{
"registry-mirrors": ["https://3cassqq.mirror.aliyuncs.com"]
}

三、重启docker

1
2
systemctl daemon-reload
systemctl restart docker

配置http代理

docker守护进程在启动的使用使用HTTP_PROXYHTTPS_PROXYNO_PROXY变量来配置http或https的代理行为。我们不能在daemon.json文件中配置这些变量。取而代之的是,我们可以配置docker systemd服务文件。

1.为docker服务创建一个目录

1
$ mkdir -p /etc/systemd/system/docker.service.d

2.创建一个/etc/systemd/system/docker.service.d/http-proxy.conf文件,并在该文件中添加以下内容

1
2
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

同样的如果你需要https的代理,那么需要创建/etc/systemd/system/docker.service.d/https-proxy.conf,并在该文件中添加以下内容

1
2
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/"

3.如果有些内容不需要通过连接,那么我们需要添加NO_PROXY变量来使这些请求不经过代理

NO_PROXY变量使用一个包含了 , (逗号)分割的特殊字符串来从代理中排除指定的请求,可用于排除的规则如下:

  • ip地址前缀 (1.2.3.4)
  • 域名或特殊的DNS标签(*)
  • 根据域名或所有的子域名进行匹配。一个以 . 开头匹配模式可用于匹配所有的子域名。例如,给定了foo.example.comexample.com这两个域名:
    • example.com匹配example.comfoo.example.com
    • .example.com仅能匹配foo.example.com
  • 单个 * 可用于所有的代理都不会生效
  • 根据特殊的端口数字进行排除,如ip地址前缀(1.2.3.4:80)和域名(foo.example.com:80)

配置的例子:

HTTP

1
2
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registory.example.com,.corp"

HTTPS

1
2
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registory.example.com,.corp"

4.刷新配置

1
$ systemctl daemon-reload

5.重启docker

1
$ systemctl restart docker

6.验证修改是否生效

1
$ systemctl show --property=Environment docker

出现上面配置的信息,说明配置成功。