Docker镜像拉取失败
由于某些原因,Docker Hub官方仓库在国内已经无法拉取,如果是国内网络环境,可配置国内镜像使用,从而解决Docker镜像拉取失败或缓慢问题
sh# 创建目录
sudo mkdir -p /etc/docker
# 写入镜像配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://dockerhub.azk8s.cn",
"https://mirror.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}
EOF
# 重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
注:镜像地址建议设置2个以上,因为部分镜像可能更新不及时,导致拉取不到最新tag,但也不宜设置过多,不然反而影响性能
如果已经存在/etc/docker/daemon.json这个配置文件,手动复制下面的镜像地址加如到配置中
sh{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://dockerhub.azk8s.cn",
"https://mirror.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}
输入 docker info
命令,可以看到“Registry Mirrors”地址列表,说明设置成功了,如下图:
shsudo systemctl daemon-reload sudo systemctl restart docker
shdocker pull zhayujie/chatgpt-on-wechat
sh
#!/bin/bash
# 使用 grep 和 sed 来提取镜像源
mirrors=$(grep -o '"https://[^"]*\|http://[^"]*' /etc/docker/daemon.json)
# 检查是否找到镜像源
if [ -z "$mirrors" ]; then
echo "No mirrors found in /etc/docker/daemon.json"
exit 1
fi
# 测试每个镜像源
echo "Found mirrors, starting tests..."
echo "----------------------------------------"
while IFS= read -r mirror; do
# 移除引号
mirror=$(echo $mirror | sed 's/"//g')
echo "Testing $mirror"
response=$(curl -I -m 10 -o /dev/null -s -w "HTTP Status: %{http_code}\nTime: %{time_total}s\n" $mirror)
if echo "$response" | grep -q "HTTP Status: 200"; then
echo "$response"
echo "Mirror $mirror is working"
else
echo "$response"
echo "Mirror $mirror is not working"
fi
echo "----------------------------------------"
done <<< "$mirrors"
本文作者:Golovin
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!