国内Docker镜像拉取失败问题解决方法
·
问题背景
自2024年6月6日起,Docker Hub在中国大陆地区被屏蔽,导致直接拉取镜像时出现"Connection reset by peer"等错误。本文教你解决在国内环境中无法正常使用Docker。
解决方案
方案一:配置国内镜像加速器
修改Docker配置文件,使用国内镜像源:
# 创建或编辑配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://mirror.baidubce.com"
]
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
注意:建议配置2-4个镜像地址,避免因单个镜像失效导致拉取失败。
方案二:配置Docker代理服务
如果已有可用代理,在daemon.json中添加代理配置:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com"
],
"proxies": {
"http-proxy": "http://proxy IP:端口",
"https-proxy": "http://proxy IP:端口"
}
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
方案三:设置系统环境变量
在Shell配置文件中添加代理环境变量:
例如,使用VMware测试环境,通过宿主机网络连接docker镜像源
# 编辑~/.bashrc或~/.zshrc
echo 'export HTTP_PROXY="http://proxy IP:端口"' >> ~/.bashrc
echo 'export HTTPS_PROXY="http://proxy IP:端口"' >> ~/.bashrc
echo 'export NO_PROXY="localhost,127.0.0.1,*.local,*.cn"' >> ~/.bashrc
# 配置示例
echo 'export HTTP_PROXY="http://192.168.50.87:10808"' >> ~/.bashrc
echo 'export HTTPS_PROXY="http://192.168.50.87:10808"' >> ~/.bashrc
echo 'export all_proxy="socks5://192.168.50.87:10808"' >> ~/.bashrc
echo 'export NO_PROXY="localhost,127.0.0.1,*.local,*.cn"' >> ~/.bashrc
# 使配置生效
source ~/.bashrc
方案四:使用阿里云专属镜像加速器
- 登录阿里云控制台
- 进入"容器镜像服务"
- 获取专属加速器地址
- 配置Docker:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的专属加速地址.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
方案五:手动下载并传输镜像
当网络完全无法访问时,可通过以下方式:
- 在境外服务器操作:
#docker pull 镜像名称:标签
docker pull nginx:latest
#docker save 镜像名称:标签 -o 镜像文件名.tar
docker save nginx:latest -o nginx.tar
-
传输镜像文件:
使用SCP、SFTP等方式将.tar文件传输到国内服务器 -
在国内服务器加载镜像:
#docker load -i 镜像文件名.tar
docker load -i nginx.tar
验证方法
配置完成后,通过以下命令验证:
# 查看镜像加速器配置
sudo docker info | grep -A 10 "Registry Mirrors"
# 测试拉取镜像
sudo docker pull hello-world
注意事项
- 镜像源时效性:国内镜像地址可能随时失效,建议定期更新配置
- proxy稳定性:proxy服务可能不稳定,大文件下载时易中断
- Docker版本兼容性:确保使用较新版本的Docker(推荐20.10+)
- 清除缓存:配置更改后若仍失败,可尝试清除Docker缓存:
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/*
sudo systemctl start docker
更多推荐



所有评论(0)