本文最后更新于 240 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。
目前,国内docker pull已经无法正常使用,常用的几个国内镜像站点都停止了服务,如果没有可用的代理我都不知道应该如何访问了。。。
但是对于有代理的朋友,可以用以下方式解决docker pull无法拉取镜像的问题:
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/proxy.conf
使用vim在新建的proxy.conf里添加以下内容并保存,假设100.100.100.100是你的代理服务器地址,58880是代理服务器端口:
[Service]
Environment="HTTP_PROXY=http://100.100.100.100:58880/"
Environment="HTTPS_PROXY=http://100.100.100.100:58880/"
Environment="NO_PROXY=localhost,127.0.0.1"
然后重启systemd和docker服务:
systemctl daemon-reload
systemctl restart docker
这个时候使用以下命令进行查看:
systemctl show --property=Environment docker
可以看到docker的环境已经使用了我们配置的代理,然后再进行docker pull:
已经可以正常使用了。
另:有点奇怪的是,使用proxychains docker pull
的方式居然也不能正常使用,明明都是指向一个代理的,这个搞得我有点懵逼,以前拉取慢都是直接使用proxychains的。。。这里留个记号,有心情的时候研究一下。
我是在本地用 registry 建了个 mirror,然后给 mirror 配代理访问 dockerhub,如果比较频繁构建镜像或者拉取镜像的话,还能用上缓存
也是可以的,我主要现在也不是经常在pull镜像,就偶尔用一次,所以不用这么折腾。现在因为缓存关系,如果我不直接登录wordpress本地后台还看不到评论~~,我是感觉这段时间好奇怪,没人评论了,今天直接登录本地后台,发现一堆。
感谢感谢,新手小白刚接触docker,就给我来个大的
客气,有用就好,不过这种方式有门槛,需要本身有科学的能力。
proxychains docker pull
不能用很正常。因为docker pull
这个动作实际上是由 systemd 启动的 dockerd 执行,而 docker 本身只是向 dockerd 发送了 pull 的指令,你对 docker 这个 controller 进行代理没有任何意义,你得想办法代理真正执行操作的 dockerd 被代理到。而 dockerd 在你执行 docker pull 命令之前早就被 systemd 跑起来了,这时候再去 proxychains 不仅为时已晚,还搞错了真正需要被代理的对象。感谢兄弟解答,省了我自己又去研究花费的时间,看来我对docker内部工作的细节还是太粗旷了,只是停留在了基本使用的程度,以后我会深入细化学习下。
太牛了 哥们
这个并不牛啊,网上到处都是教程~~我其他很多文章才牛。。
本地直接网关代理。
这就是写给没有网关代理只有一般代理的场景(或者人)用的啊,比如云服务器~,本地当然用不着,我都没感觉。