运行一个本地的registry镜像

为什么要在本地运行一个registry?

如果你有多个Docker在你的环境中运行时(如:多个运行着Docker守护进程的物理主机或虚拟机),需要用到一个本地不存在的镜像时,都需要互联网连接到公共的Docker registry上拉取。通过在本地运行一个registry的镜像,能保证你大多数的镜像拉取都在本地进行。

它运行原理?

当你第一次向你本地registry请求一个镜像时,它先把镜像从公共的registry中拉取到并保存到本地的registry中,接着放回给你。在以后的请求中,直接冲本地的registry中拉取镜像,避免每次都要向公共registry请求。

如何创建一个本地registry镜像?

只需要两个步骤就可以:                          

步骤 1: 设置你的Docker守护经常连接到本地的registry

你需要在Docker守护进程启动的时候,传递一个 --registry-mirror 参数:

docker --registry-mirror=http://<my-docker-mirror-host> -d

例如,你的registry服务地址是 http://10.0.0.2:5000, 执行如下命令:

docker --registry-mirror=http://10.0.0.2:5000 -d

注意: 根据你的本地主机设置,你可以修改/etc/default/docker文件中的 DOCKER_OPTS 变量,在其后面追加一个 --registry-mirror 参数。

步骤 2: 运行本地registry

你需要启动一个本地registry服务。例如,运行一个registry监听5000端口,镜像关联到 registry-1.docker.io

docker run -p 5000:5000 \
    -e STANDALONE=false \
    -e MIRROR_SOURCE=https://registry-1.docker.io \
    -e MIRROR_SOURCE_INDEX=https://index.docker.io \
    registry

测试

启动服务后,用pull命令想registry拉取一个没有的镜像(使用 time统计耗时):

$ time docker pull node:latest
Pulling repository node
[...]

real   1m14.078s
user   0m0.176s
sys    0m0.120s

现在,删除刚刚拉取的本地镜像:

$ docker rmi node:latest

接着,重新发起拉取请求:

$ time docker pull node:latest
Pulling repository node
[...]

real   0m51.376s
user   0m0.120s
sys    0m0.116s

对比可以看到,第二次拉取的速度大幅度的提升。经过第一次的远程拉取同步到本地registry后,避免了远程拉取的等待时间。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值