Docker配置daemon.json

0 阅读2分钟

Docker拉取镜像失败的解决方案

在从Docker的Hub库中拉取镜像时,可能会遇到以下错误:

docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.

这个问题通常是由于网络连接问题或镜像源访问受限导致的。以下是详细的解决方法。

解决方法

1. 检查网络连接

首先确保你的服务器能够正常访问互联网,可以尝试使用以下命令测试网络连接:

ping google.com

如果网络连接存在问题,请先修复网络。

2. 修改Docker配置文件

编辑Docker的配置文件 /etc/docker/daemon.json,添加或修改如下内容,以使用国内的镜像加速器:

代码如下:

{
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    },
    "registry-mirrors": [
        "https://docker.registry.cyou",
        "https://docker-cf.registry.cyou",
        "https://dockercf.jsdelivr.fyi",
        "https://docker.jsdelivr.fyi",
        "https://dockertest.jsdelivr.fyi",
        "https://mirror.aliyuncs.com",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://mirror.iscas.ac.cn",
        "https://docker.rainbond.cc"
    ]
}
3. 重载配置并重启Docker服务

执行以下命令使配置文件生效:

代码语言:javascript

sudo systemctl daemon-reload

然后重启Docker服务:

sudo systemctl restart docker
4. 验证镜像加速器是否生效

通过以下命令检查Docker的当前配置信息:

docker info | grep Registry

你应该会看到配置的镜像源列表。如果一切正常,重新尝试拉取镜像:

docker pull hello-world
5. 其他注意事项

如果上述方法仍无法解决问题,可以尝试以下操作:

  • 检查防火墙和安全组配置,确保允许访问Docker所需的网络端口(通常是443端口)。
  • 更新Docker版本,以避免可能的兼容性问题:
sudo yum update docker-ce
  • 更换其他可用的镜像加速器。

总结

通过修改Docker的配置文件并使用国内的镜像加速器,可以有效解决Docker拉取镜像失败的问题。如果问题仍未解决,建议进一步检查网络环境或咨询相关技术支持。