最近想重新部署一下docker上的应用,结果发现一些镜像没办法拉取了。
安装 Docker 后遇到无法拉取镜像的问题,报错如下: docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'.
目前很多情况无法正常拉取镜像,当前一种简单的方案如下。
使用华为云。容器镜像服务 SWR [镜像中心]:
https://console.huaweicloud.com/swr/?region=cn-east-3#/swr/mirror
注册华为云账号,登录后实名认证完成后,进入镜像中心点击“镜像加速器”。

每个人都会有一个自己的地址

由于运营商网络原因,会导致您拉取第三方镜像仓库的镜像(例如Docker Hub)变慢甚至下载失败。华为云容器镜像服务提供了镜像下载加速功能,对部分常用的开源镜像下载进行加速。
注意:* SWR镜像加速器是面向个人开发者的服务,仅限于支持个人开发场景,不允许有再次封装或商业用途。
- 面向生产环境使用场景,为避免Docker访问网络问题导致的镜像拉取失败,建议您在生产环境中慎重考虑对Docker Hub容器镜像的依赖,将需要的镜像从Docker Hub同步到SWR私有仓库使用。
- 仅支持通过镜像加速器拉取常用的开源镜像,镜像加速器无法保证一定拉取到所有的镜像版本,建议您将需要的镜像同步到SWR私有仓库使用。
- 暂不支持containerd容器引擎设置镜像加速器。
约束和限制
- 仅限华为云用户在华为云上的容器产品中使用该镜像加速能力。
- 仅支持通过镜像加速器拉取常用的开源镜像,不保证能够加速所有镜像,生产环境请谨慎使用。
- 构建镜像的客户端所安装的容器引擎(Docker)版本必须为18.06(包含)到24.0.9(包含)之间的。
- "华南-广州"、"华北-北京四"、"华东-上海一"和"西南-贵阳一"区域支持该功能。
操作步骤
-
登录容器镜像服务控制台。
-
在左侧导航栏选择**“镜像资源 > 镜像中心”**。
-
单击**“镜像加速器”**,在弹框中找到“加速器地址”,单击
,将加速器地址复制到剪切板。
-
以root用户登录容器引擎所在的虚拟机。
-
加速器地址
https://[加速器地址].mirror.swr.myhuaweicloud.com
-
配置镜像加速器
修改“/etc/docker/daemon.json”文件(如果没有,可以手动创建),在该文件内添加如下内容:
vi /etc/docker/daemon.json
{
"registry-mirrors": [ "https://[加速器地址].mirror.swr.myhuaweicloud.com" ]
}
按“Esc”,输入**:wq**保存并退出。
7.重启容器引擎
配置完成后,执行systemctl restart docker重启容器引擎。 如果重启失败,则检查操作系统其他位置(如:/etc/sysconfig/docker、/etc/default/docker)是否配置了registry-mirrors参数,删除此参数并重启容器引擎即可。
8.确认配置结果
执行docker info,当Registry Mirrors字段的地址为加速器的地址时,说明加速器已经配置成功。
确定
这时候,再执行
sudo docker run -d \ --name homeassistant \ --privileged \ --restart=unless-stopped \ -e TZ=Asia/Shanghai \ -v /opt/home-assistant:/config \ -v /run/dbus:/run/dbus:ro \ --network=host \ ghcr.io/home-assistant/home-assistant:stable
你会发现很容易就安装成功了。