使用DaoCloud加速docker镜像下载——修改daemon.json遇到的问题

本文介绍如何加速Docker镜像的下载过程,包括使用国内镜像源及DaoCloud提供的加速服务,并解决了自动配置导致的启动错误问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.docker镜像的获取

使用如下的docker pull 命令可以从官方的docker hub网站获取需要的镜像。

docker pull NAME[:TAG]

官方网站虽然资源多,但是由于是国外的网站,访问速度很不理想,获取一个镜像可能要等很久。

2.镜像获取加速的方法

2.1 非官方仓库下载

国内有很多提供这样服务的镜像源,下载的速度要好很多。
有满足需要的镜像的话,可以从对应地址下载。
在NAME 前写完整的仓库地址即可

docker pull hub.c.163.com/public/ubuntu:14.04  %从网易蜂巢的源下载ubuntu镜像

2.2 加速官方仓库的下载

国内有DaoCloud等网站提供免费的加速服务。
实际上,就是修改docker的配置文件 /etc/docker/daemon.json
在下载的时候通过网站的中转加速。这样的好处是每次直接写pull命令,不用加具体地址。
DaoCloud
注册用户,登录后,找到加速器图标,点击按照说明做一下很简单的配置就好了
具体可以参考这篇博客

3.出现的问题

DaoCloud提供了这样一条命令(其实直接运行这个,不注册网站也可以)

 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d552c9b5.m.daocloud.io

命令通过脚本修改了 /etc/docker/daemon.json 文件
可是不知道为什么,这样自动修改后,重启docker服务会报错

Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.

根据提示,查看日志会看到类似这样的内容

2月 03 17:06:01 xz-Sys systemd[1]: Failed to start Docker Application Container Engine.
2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Unit entered failed state.
2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Failed with result ‘exit-code’.
2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Service hold-off time over, scheduling restart.
2月 03 17:06:01 xz-Sys systemd[1]: Stopped Docker Application Container Engine.
2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Start request repeated too quickly.
2月 03 17:06:01 xz-Sys systemd[1]: Failed to start Docker Application Container Engine.

这种问题出现是因为之前那条命令自动修改的json文件格式有问题
命令运行后查看文件可以看到内容变成

{“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“],
“runtimes”: {“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“],
“nvidia”: {“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“],
“path”: “/usr/bin/nvidia-container-runtime”,
“runtimeArgs”: [],
“storage-driver”: “devicemapper”
}
}
}

可能不完全一样,但格式是混乱的,可能和命令试了不只一次也有关系。

整理一下格式,变成

{“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“],
“runtimes”: {
“nvidia”: {
“path”: “/usr/bin/nvidia-container-runtime”,
“runtimeArgs”: [],
“storage-driver”: “devicemapper”
}
}
}

现在再使用 sudo service docker restart 就没问题了
下载镜像的速度也会得到提升。

4.总结

小问题,但在网上看到确实有不少人遇到同样状况,因为大家用DaoCloud官方的命令可能不会怀疑其正确性,出现错误可能会浪费很多时间,想不到脚本修改的json会有问题。
总结到这里,hope it helps.

在国内使用Docker时,由于官方国外源可能会有访问速度慢或者不稳定的问题,我们可以将国内的镜像源添加到`daemon.json`文件中来加速镜像下载。`daemon.json`是一个自定义配置文件,用于配置Docker守护进程的行为。 以下是设置国内镜像源的基本步骤: 1. **创建`daemon.json`**:首先,需要确认你的Docker版本支持这个配置文件。如果你的Docker版本大于17.05,可以在`~/.docker/`目录下创建一个名为`daemon.json`的新文件。如果没有就直接编辑这个文件,注意要用文本编辑器如`vi`, `nano`, 或者`code`(Windows用户)。 2. **添加镜像源信息**:在`daemon.json`文件中,你需要添加一个`registry-mirrors`键值对,值是你想要添加的国内镜像仓库地址列表。例如,阿里云的官方镜像库可以这样配置: ```json { "registry-mirrors": ["https://mirrors.aliyun.com/docker/distribution"] } ``` 还有很多其他国内镜像源可以选择,比如QingCloud、Docker Hub中国版等,替换为你找到的实际镜像源URL。 3. **启用配置**:确保`daemon.json`文件存在后,需要让Docker使用新的配置。你可以通过命令行运行: ``` docker daemon --load-daemon-config=~/.docker/daemon.json ``` 如果你想让这个更改永久生效,可以将上述命令加入到系统启动脚本中。 4. **验证镜像源**:现在,重启Docker服务或者使用`docker pull`命令,应该会从你添加的镜像下载镜像了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值