问题描述
使用docker拉取ubuntu 20.04/22.04 arm64镜像很慢,而且经常出错。
解决方法
在遇到这种问题时,首先想到的是将镜像源换成国内的。
尝试更换国内源,其中有个一个源列表可以拉20.04:
{
"registry-mirrors": ["https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com",
"https://reg-mirror.qiniu.com",
"https://3laho3y3.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://hub.docker.com"]
}
但是22.04一直没成功,看日志,22.04似乎只能从国外的镜像源拉,所以总是Time out或者压根就拉不了。此时似乎只能设置代理。于是通过如下步骤进行代理设置:
- 为docker服务创建一个systemd服务
sudo mkdir -p /etc/systemd/system/docker.service.d
- 创建http-proxy.conf文件,并添加HTTP_PROXY环境变量。示例如下:
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
# 添加如下内容
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890" "HTTPS_PROXY=http://127.0.0.1:7890"
- 设置NO_PROXY环境变量(本地用于存储和管理Docker镜像的中央仓库可以绕过代理)。示例如下:
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890" "HTTPS_PROXY=http://127.0.0.1:7890" "NO_PROXY=localhost,127.0.0.1"
- 更新配置,命令如下:
sudo systemctl daemon-reload
- 重启Docker服务,命令如下:
sudo systemctl restart docker