国内无法访问下载Docker镜像的两种解决方案

零门槛

境外镜像

优点:不需大量修改,只需几个命令

缺点:网络可能慢或者不稳定

有一个难兄难弟的国家:俄罗斯,被美国制裁无法顺利访问Docker Hub。这里可以借助俄罗斯国家的镜像!

下面命令可直接执行~

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.ru"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 镜像导入导出

优点:项目部署中可方便使用

缺点:镜像文件有时候比较大,复制迁移略麻烦

仅需在已经Pull过镜像的服务器,导出镜像,然后在需要pull镜像的服务器导入即可!

导出镜像到xxx.tar

docker save -o <path for generated tar file> <image name>

示例:docker save -o nginx.tar nginx

将xxx.tar复制到其他服务器上

 

docker load -i <path to image tar file>
示例:docker load -i nginx.tar

Yandex容器加速

优点:适合单独pull镜像使用,俄罗斯大厂提供服务

缺点:不支持配置到 daemon.json

官方镜像:https://mirror.yandex.ru/

使用方式:docker pull cr.yandex/mirror/nginx

低门槛

Docker使用HTTP代理

优点:可从Docker官方直接拉取

缺点:使用完毕后一定要关闭HTTP代理

首先,代理软件能访问Docker Hub官网!这个软件不多说了我测试使用的是 cl**h。设置软件支持局域网内访问。

这里主要介绍如何让服务器的Docker Pull的时候能走代理!

1,新建目录

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

2,新建文件,粘贴并内容,并保存!

 

vim /etc/systemd/system/docker.service.d/http-proxy.conf


以下粘贴内容,IP一定要换成你代理软件运行的电脑的内网IP,通过source /etc/profile.d/clash.sh可以查看

 

端口一定要是代理软件设置的局域网端口!

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=127.0.0.1,localhost"

3,重启Docker

systemctl daemon-reload
systemctl restart docker

4,检查环境变量是否生效

systemctl show --property=Environment docker

 

阅读剩余
THE END