侧边栏壁纸
博主昵称
Charlotte

把书读烂,困在感情里的是笨蛋

解决 Docker 安装镜像时的网络超时问题

2024年10月17日 442阅读 0评论 1点赞

在使用 Docker 搜索并安装镜像时,可能会遇到网络超时的问题,例如在执行以下命令时:

docker search jenkins

报错信息如下:

Error response from daemon: Get "https://index.docker.io/v1/search?q=jenkins&n=25": dial tcp 31.13.87.34:443: i/o timeout

这种情况通常是由于 Docker 默认源网络不稳定导致的。解决方法就是更换 Docker 镜像源。本文将为您介绍如何通过更换镜像源解决此类问题。

最基础的解决方法:修改 /etc/docker/daemon.json 文件

该文件用于配置 Docker 参数,默认是不存在的,需要自己创建。

  1. 首先使用 cat 命令查看一下 daemon.json 中有没有内容:

    cat /etc/docker/daemon.json

    如果没有内容或者此文件不存在,我们可以使用 touch 命令创建并命名为 daemon.json 文件:

    touch /etc/docker/daemon.json
  2. 通过 vim 命令打开 daemon.json 文件,注意如果您已经切换到 /etc/docker 目录中,可以直接使用 vim 进入即可:

    vi /etc/docker/daemon.json
  3. 点击键盘上的 i 键切换到插入模式,在插入模式中将以下内容复制粘贴:

    {
        "registry-mirrors": [
            "https://registry.docker-cn.com",
            "http://hub-mirror.c.163.com",
            "https://docker.mirrors.ustc.edu.cn",
            "https://pee6w651.mirror.aliyuncs.com"
        ]
    }
  4. 点击键盘 Esc 键退出插入模式,点击键盘 Shift + :,在冒号后面输入 wq 进行保存并退出。
  5. 重启 Docker 使更改生效:

    systemctl daemon-reload
    systemctl restart docker

目前可用的镜像代理

拉取 pull 镜像时,遇到不可用、关停、访问比较慢的状态,建议同时配置多个镜像源。

提供商地址
DaoCloudhttps://docker.m.daocloud.io
阿里云https://<your_code>.mirror.aliyuncs.com
Docker镜像代理https://dockerproxy.com
百度云https://mirror.baidubce.com
南京大学https://docker.nju.edu.cn
中科院https://mirror.iscas.ac.cn

解决方案1:配置加速地址

配置加速地址适用于 Ubuntu 16.04+、Debian 8+、CentOS 7+。具体步骤如下:

方式一:配置 daemon.json 文件

  1. 创建或编辑 /etc/docker/daemon.json 文件:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": [
            "https://do.nark.eu.org",
            "https://dc.j8.work",
            "https://docker.m.daocloud.io",
            "https://dockerproxy.com",
            "https://docker.mirrors.ustc.edu.cn",
            "https://docker.nju.edu.cn"
        ]
    }
    EOF
  2. 重启 Docker 使更改生效:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
  3. 检查加速是否生效:

    docker info

    如果从输出结果中看到了配置的 registry-mirrors 地址,说明配置成功。

方式二:直接使用镜像加速地址

如果有正在运行的容器不方便重启 Docker 服务,可以直接在拉取镜像时使用加速地址,例如:

docker pull do.nark.eu.org/library/mysql:5.7

第三方镜像

  • AtomHub 可信镜像中心:大部分需要的镜像都可以找到。

    在使用 docker compose 时,可以先拉取对应版本的镜像,然后再执行 docker compose

加速代理站点

  • Github 下载加速代理站点

    • 站点地址:https://docker.888666222.xyz/
    • 设置方法:

      sudo tee /etc/docker/daemon.json <<EOF
      {
          "registry-mirrors": ["https://docker.888666222.xyz"]
      }
      EOF
    • 拉取镜像并重新打标签:

      docker pull docker.888666222.xyz/library/alpine:latest
      docker pull docker.888666222.xyz/coredns/coredns:latest

解决方案2:使用代理拉取镜像

  1. 创建配置文件:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
  2. 在文件中添加代理设置:

    [Service]
    Environment="HTTP_PROXY=socks5://user:pass@127.0.0.1:1080"
    Environment="HTTPS_PROXY=socks5://user:pass@127.0.0.1:1080"
  3. 重启 Docker:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
  4. 查看环境变量:

    sudo systemctl show --property=Environment docker

解决方案3:直接传送镜像

  1. A 服务器保存 Docker 镜像:

    docker save myimage > myimage.tar
  2. 将镜像传送到 B 服务器:

    scp myimage.tar root@192.0.2.0:/home
  3. B 服务器加载 Docker 镜像:

    cd /home
    docker load < myimage.tar
  4. 查看镜像:

    docker images
1
打赏
微信
微信

—— 评论区 ——

昵称
邮箱
网址
取消
博主栏壁纸
博主头像 Charlotte

把书读烂,困在感情里的是笨蛋

54 文章数
17 标签数
50 评论量
人生倒计时
今日已经过去 13 小时
55%
这周已经过去 2
28%
本月已经过去 8
26%
今年已经过去 4 个月
33%
舔狗日记
你昨天晚上又没回我的消息,在我孜孜不倦的骚扰下,你终于舍得回我了,你说“”,这其中一定有什么含义,我想了很久,滚是三点水,这代表你对我的思念也如滚滚流水一样汹涌,我感动哭了,不知道你现在在干嘛,我很想你。