容器服务Docker&Kubernetes 关注
手机版

Docker 镜像加速器

  1. 云栖社区>
  2. 容器服务Docker&Kubernetes>
  3. 博客>
  4. 正文

Docker 镜像加速器

hyzhou 2016-04-15 18:00:19 浏览180172 评论13

摘要: Docker 镜像加速器。docker pull wordpress

Docker 镜像加速器

我们使用Docker的第一步,应该是获取一个官方的镜像,例如mysqlwordpress,基于这些基础镜像我们可以开发自己个性化的应用。我们可以使用Docker命令行工具来下载官方镜像。
但是因为网络原因,我们下载一个300M的镜像需要很长的时间,甚至下载失败。因为这个原因,阿里云容器Hub服务提供了官方的镜像站点加速官方镜像的下载速度。

使用镜像加速器

在不同的系统下面,配置加速器的方式有一些不同,所以我们介绍主要的几个操作系统的配置方法。
关于加速器的地址,你只需要登录容器Hub服务的控制台,左侧的加速器帮助页面就会显示为你独立分配的加速地址。

例如:
公网Mirror:[系统分配前缀].mirror.aliyuncs.com

当你的docker版本较新时

当你下载安装的Docker Version不低于1.10时,建议直接通过daemon config进行配置。
使用配置文件 /etc/docker/daemon.json(没有时新建该文件)

{
    "registry-mirrors": ["<your accelerate address>"]
}

重启Docker Daemon就可以了。

当你的docker版本较旧时

只能根据系统的不同修改对应的配置文件了。

Ubuntu 12.04 14.04

Ubuntu的配置文件的位置在 /etc/default/docker
你只需要在这个配置文件,添加加速器的配置项,重启Docker就可以了

echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=<your accelerate address>\"" | sudo tee -a /etc/default/docker
sudo service docker restart

Ubuntu 15.04 15.10

Ubuntu 15.04 之后的加速器配置方式有了一些变化
Ubuntu的配置文件的位置在 /etc/systemd/system/docker.service.d/目录下
在这个目录下创建任意的*.conf文件就可以作为配置文件。然后在这个配置文件,添加加速器的配置项,重启Docker就可以了

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=<your accelerate address>
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

CentOS 7

CentOS的配置方式略微复杂,需要先将默认的配置文件复制出来
/lib/systemd/system/docker.service -> /etc/systemd/system/docker.service
然后再将加速器地址添加到配置文件的启动命令
重启Docker就可以了。

sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart

Redhat 7

Redhat 7配置加速器的方式与其他系统都不一样,需要编辑/etc/sysconfig/docker配置文件。
OPTIONS配置项中添加加速器配置--registry-mirror=<your accelerate address>
最后sudo service docker restart重启docker daemon。

Redhat 6、CentOS 6

在这两个系统上没有办法直接安装Docker,需要升级内核。
配置加速器的方式和上一个配置类似,也是通过编辑/etc/sysconfig/docker配置文件。
other_args配置项中添加加速器配置--registry-mirror=<your accelerate address>
最后sudo service docker restart重启docker daemon。

Docker Toolbox

在Windows、Mac系统上使用Docker Toolbox使用Docker的话
推荐做法是在创建Linux虚拟机的时候,就将加速器的地址配置进去

docker-machine create --engine-registry-mirror=<your accelerate address> -d virtualbox default
docker-machine env default
eval "$(docker-machine env default)"
docker info

如果你已经通过docker-machine创建了虚拟机的话,则需要通过登录机器修改配置了
首先通过docker-machine ssh <machine-name>登录虚拟机
然后修改/var/lib/boot2docker/profile文件,将--registry-mirror=<your accelerate address>添加到EXTRA_ARGS
最后sudo /etc/init.d/docker restart重启Docker服务就可以了

注意

文中的加速器地址<your accelerate address>,请到容器Hub服务控制台查看

相关链接

Docker Engine 镜像源站
Docker Toolbox 镜像源站

其他文章

Docker CE通过镜像安装
Docker镜像的基本使用
购买ECS快速上手测试Docker!!!

【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击

网友评论

1F
snowdream86

国内docker必备工具

2F
隔壁老王08

请问centos 6.5版本可以用Docker加速器么?

hyzhou

可以尝试一下文章中新增的对低版本CentOS的配置方式。

评论
3F
1605133840010554

ubuntu16 docker Version: 17.03.1-ce
配置deamon.json后,dockerd里没有registry的配置呢?

root 19256 1 1 10:28 ? 00:00:00 /usr/bin/dockerd -H fd://
root 19266 19256 0 10:28 ? 00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc

4F
duomu

感觉这样设置了也没有快呀

5F
雨后龙井

写得太不清楚了,关于centos的,在7上根本性无效。

1298390023599707

请看楼下回复

评论
6F
1298390023599707

centos 7 不起效的原因是 文件docker.service的ExecStart命令应该是/usr/bin/dockerd

按照如下执行没问题

sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=你的阿里云DockerHub加速器地址|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart
普罗旺斯~hyzhou 赞同
7F
p0sec

早怎么没发现这个东西呢,谢谢阿里大大

8F
coldark

请问群晖上怎么使用加速

9F
小本~

https://cr.console.aliyun.com 中指引应该更新了。
按照页面中新建daemon.json文件后,reboot启动不了服务端。
删掉其他字段只剩下json就正常了
{
"registry-mirrors": ["https://.mirror.aliyuncs.com"]
}
centos:7.1_aliyun
docker17.06.2-ce

1729588858046669 赞同
1729588858046669

haha,我傻不啦叽直接把所有代码都拷贝进去了,mkdir那些是新建这个文件目录用的,json里面只有花括号里面的内容就够了

评论
10F
幸运de贝壳

sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=你的阿里云DockerHub加速器地址|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart

centos7 上 这么执行了,但是 dockerfile里面 还是有问题啊,比如 FROM mongo:latest, 还是 会到 dockerhub去下载呀,这个怎么破

11F
王东哲

提示 no certs for 是什么情况?我用的MAC版 ,
image

何大洪paiacc荒丘善而不争294590501646355845 赞同
294590501646355845

一样的问题

radium

一样的问题

mycgi

都解决了吗?

哈弗曼的树

bug+1

newgds

bug+1

口止文

一样的问题

strongliu

bug+1

1671067360882965

bug+1 解决了么

哲学家很忙

应该是证书的问题,也许是签名失效之类的导致Mac不认可,把https改成http好像就可以了...

何大洪

bug +1

jasonming

没问题的,直接点确定就好,在此之前先用docker login把registry的账号密码保存到keychain,要不然配置好了之后restart会直接死掉

1389914641215744

bug +1

1416006421304184

@jasonming 老铁666

1643167080446984

+1

评论
12F
ffsdfsd

Jan 16 23:52:36 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Jan 16 23:52:36 localhost.localdomain dockerd[2956]: invalid value "Jan 16 23:52:36 localhost.localdomain dockerd[2956]: See '/usr/bin/dockerd-current --help'.
Jan 16 23:52:36 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=125/n/a
Jan 16 23:52:36 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jan 16 23:52:36 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
Jan 16 23:52:36 localhost.localdomain systemd[1]: docker.service failed.

不小心没认真看,直接执行了:sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=|g" /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=|g" /etc/systemd/system/docker.service
要怎么恢复?

13F
ffsdfsd

如果配置错误或是不想用aliyun加速, 要怎么删除?

hyzhou
文章9篇 | 关注105
关注
提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命... 查看详情
是一款提供了现场可编程门阵列(FPGA)的计算实例,基于阿里云弹性计算框架,用户可以几分钟内... 查看详情
阿里云针对移动应用推出的无线加速产品,旨在依托阿里云遍布全网的加速节点,海量带宽网络等优越的... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
双12

双12