在使用 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 参数,默认是不存在的,需要自己创建。
首先使用 cat
命令查看一下 daemon.json
中有没有内容:
cat /etc/docker/daemon.json
如果没有内容或者此文件不存在,我们可以使用 touch
命令创建并命名为 daemon.json
文件:
touch /etc/docker/daemon.json
通过 vim
命令打开 daemon.json
文件,注意如果您已经切换到 /etc/docker
目录中,可以直接使用 vim
进入即可:
vi /etc/docker/daemon.json
点击键盘上的 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"
]
}
Esc
键退出插入模式,点击键盘 Shift + :
,在冒号后面输入 wq
进行保存并退出。重启 Docker 使更改生效:
systemctl daemon-reload
systemctl restart docker
拉取 pull
镜像时,遇到不可用、关停、访问比较慢的状态,建议同时配置多个镜像源。
提供商 | 地址 |
---|---|
DaoCloud | https://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 |
配置加速地址适用于 Ubuntu 16.04+、Debian 8+、CentOS 7+。具体步骤如下:
daemon.json
文件创建或编辑 /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
重启 Docker 使更改生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
检查加速是否生效:
docker info
如果从输出结果中看到了配置的 registry-mirrors
地址,说明配置成功。
如果有正在运行的容器不方便重启 Docker 服务,可以直接在拉取镜像时使用加速地址,例如:
docker pull do.nark.eu.org/library/mysql:5.7
AtomHub 可信镜像中心:大部分需要的镜像都可以找到。
用法示例:
docker pull atomhub.openatom.cn/amd64/redis:7.0.13
在使用 docker compose
时,可以先拉取对应版本的镜像,然后再执行 docker compose
。
Github 下载加速代理站点:
设置方法:
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
创建配置文件:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
在文件中添加代理设置:
[Service]
Environment="HTTP_PROXY=socks5://user:pass@127.0.0.1:1080"
Environment="HTTPS_PROXY=socks5://user:pass@127.0.0.1:1080"
重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
查看环境变量:
sudo systemctl show --property=Environment docker
A 服务器保存 Docker 镜像:
docker save myimage > myimage.tar
将镜像传送到 B 服务器:
scp myimage.tar root@192.0.2.0:/home
B 服务器加载 Docker 镜像:
cd /home
docker load < myimage.tar
查看镜像:
docker images
—— 评论区 ——