让 Docker Cli 使用代理拉取镜像

一、背景

自从某年某月某日起,ZG大陆跟 hub.docker.com 完全隔绝关系后(原因未明),就无法直接使用 docker pull 从官方镜像库来拉取镜像了,国内的很多镜像源也都纷纷自觉关闭。虽然国内出现了可信镜像中心,如:AtomHub 可信镜像仓库平台 。但是如我猜测的那样,由于需要「可信」,所以镜像数量和更新力度,肯定没有官方仓库全面。说白了,就跟 Google Play 和国内的众多 AppStore 的情况一样。

刚开始无法访问时的讨论

二、设置方法

所以,逼不得已的情况下,只能通过代理的方式,先从 dockerhub 上拉取镜像,然后通过本地镜像库,分给各系统使用。废话不多说了,具体操作如下:

1、搭建本地镜像库

这个之前已经分享过,详见《Harbor 安装简记》和《Harbor 安装过程中问题小记》。

2、准备能访问 dockerhub 的代理

略。

3、配置 docker cli

(1)还原官方镜像源

gxjtcdc@UBT:~$ more /etc/docker/daemon.json 
{
 "registry-mirrors": [
    "https://hub.docker.com/"]
}
gxjtcdc@UBT:~$

(2)配置 docker cli 代理

在执行 docker pull 时,是由守护进程 dockerd 来执行。因此,代理需要配在 dockerd 的环境中。而这个环境,则是受 systemd 所管控,因此实际是 systemd 的配置。

以上这段话是从网上摘录的,目前官方文档找不到相关说明,不过我配置了 daemon.json 确实不生效,最终还是配置了 systemd 的配置才生效。

具体如下:

gxjtcdc@UBT:~$ more /etc/systemd/system/docker.service.d/http-proxy.conf 
[Service]
Environment="HTTP_PROXY=http://192.168.116.128:7899"
Environment="HTTPS_PROXY=http://192.168.116.128:7899"
gxjtcdc@UBT:~$ 

找不到文件夹的新建文件夹,找不到文件的新建文件。

需要注意的是,如果你的代理不支持 https,请把 HTTPS_PROXY 链接设置成 http,我曾因为这个被耽误了好久……

修改完成后,执行以下命令刷新:

sudo systemctl daemon-reload;
sudo systemctl restart docker;

4、打完收工

配置完成后,即可正常拉取镜像

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息