针对docker无法拉取镜像的两种解决方法

针对docker无法拉取镜像的两种解决方法

docker被墙无法拉取镜像怎么办?

第一种方法:添加镜像源

打开 ssh 软件连接服务器

打开位于 /etc/docekr 的文件夹,如果 etc 下没有 docker 文件夹那就手动创建一个

然后进入docker文件夹

创建一个名为:daemon.json 的 json 文件

然后在文件里输入以下代码内容:

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://dockerproxy.com",
        "https://gcr.m.daocloud.io"
    ]
}

如果以上加速依然无法拉取,那试试下面的加强版

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://dockerproxy.com",
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}

然后保存并退出

最后再执行

sudo systemctl daemon-reload

systemctl restart docker

重启 docker 后再拉取镜像即可

第二种方法:自选代理

docker 命令走代理

然而实际测试下来,就算修改了国内的镜像源,有时候由于国内镜像更新不及时,或者需要拉取的镜像比较冷门,只有国外镜像站才有,那就需要让 docker pull 命令走我们的代理。

在docker的进程服务文件夹配置我们的代理设置,如果没有就新建这个文件夹

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

然后在 docker.service.d 文件夹里新建我们的代理文件 proxy.conf

sudo vim proxy.conf

并把文件写如下面这个格式

[Service]

Environment="HTTP_PROXY=代理服务器ip:port"

Environment="HTTPS_PROXY=代理服务器ip:port"

假如我们本机已经设置好代理了,那么代理服务器就可以写为localhost,端口就是我们设置的http和https代理端口

[Service] 

Environment="HTTP_PROXY=localhost:port" 

Environment="HTTPS_PROXY=localhost:port"

最后我们仍然是验证一下是否修改成功

docker info

在长串info信息中如果出现类似下文的内容

HTTP Proxy: 代理服务器ip:port

HTTPS Proxy: 代理服务器ip:port

代表代理成功,可以正常拉取镜像了

LICENSED UNDER CC BY-NC-SA 4.0
Comment