Docker Registry

1 介绍

registry用于保存docker镜像,包括镜像的层次结构元数据
启动容器时,docker daemon会先试图从本地获取相关的镜像,本地镜像不存在时,就会从registry中下载该镜像并保存到本地
拉取镜像时,如果不知道registry仓库地址,默认从Docker Hub搜索拉取镜像

2 分类

  • Sponsor Registry:第三方的registry,供客户和docker社区使用
  • mirror Registry:第三方的registry,只让客户使用,如docker cn和阿里云的镜像加速器;
  • vendor Registry:服务商的registry,由发布docker镜像的供应商提供的registry;如红帽提供的专有的收费提供;
  • private Registry:通过设有防火墙和额外的安全层私有实体提供的registry;
  • 自建的registry,在本地搭建registry,节省带宽

3 registry组成(repository和index)

3.1 Repository

特定docker镜像所有迭代版本组成的镜像仓库;
一个registry中可以存在多个repository;
repository可分为“顶层仓库”和“用户仓库”;
用户仓库名称格式为“用户名/仓库名”;
每个仓库可以包含多个Tag(标签),每个标签对应一个镜像

3.2 Index

维护用户账户、镜像校验以及公共命名空间信息
相当于为registry提供了一个完成用户认证等功能的检索接口

4 拉取仓库镜像的格式

docker pull [:]/[/]:

registry:仓库服务器地址,不指定默认是docker hub
port:端口;默认是443,因为是https协议
namespace:名称空间,指是哪个用户的仓库,如果是顶层仓库,可省略
name:仓库名
tag:标签名;默认是latest版本

5 搭建私有仓库(distribution)

5.1 distribution 介绍

docker提供的开源Registry,但是很简单,只能作为存储镜像的仓库,没有额外的功能;如管理页面等

5.2 安装启动 distribution

两种方案(优选方案2)

5.2.1 方案1:使用yum安装(直接从extras 源中下载安装)

[root@johnnyg03 ~]# yum info docker-distribution
[root@johnnyg03 ~]# yum -y install docker-distribution

5.2.2 方案2:拉取镜像,作为容器安装

5.2.2.1 拉取镜像
[root@johnnyg03 ~]# docker pull registry
5.2.2.2 启动registry 容器
[root@johnnyg03 ~]# docker run -d --name registry -p 5000:5000 -v /data/registry/:/var/lib/registry registry:latest 
b1fa0878f08452564920b17d9daf2e28bf6a61d3840b4c4a6e4a34fa85b67325
//-p 5000:5000:将容器中的5000端口,暴露在宿主机的5000端口
//-v /data/registry:/var/lib/registry:指定宿主机存储的位置为 /data/registry
//-d:后台运行容器

[root@johnnyg03 ~]# docker port registry 
5000/tcp -> 0.0.0.0:5000
5000/tcp -> :::5000

[root@johnnyg03 ~]# netstat -lnupt | grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      11752/docker-proxy  
tcp6       0      0 :::5000                 :::*                    LISTEN      11759/docker-proxy  

5.2.3 上传镜像至私有仓库

5.2.3.1 为本地镜像打上合适标签
[root@johnnyg03 ~]# docker tag busybox:latest 10.0.2.12:5000/busybox:latest
[root@johnnyg03 ~]# docker tag nginx:latest 10.0.2.12:5000/nginx:latest
[root@johnnyg03 ~]# docker images
REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
10.0.2.12:5000/busybox   latest    beae173ccac6   7 months ago   1.24MB
busybox                  latest    beae173ccac6   7 months ago   1.24MB
10.0.2.12:5000/nginx     latest    605c77e624dd   7 months ago   141MB
nginx                    latest    605c77e624dd   7 months ago   141MB
5.2.3.2 修改docker的daemon.json守护进程文件
[root@johnnyg03 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries": ["10.0.2.12:5000"]		//添加此行(IP为需要被访问地址)
}
[root@johnnyg03 ~]# systemctl restart docker.service

【注:docker 上传下载默认只支持https协议,搭建的私有仓库是http协议,因此需要在上方这个docker 的守护进程文件中添加一行表示允许此IP使用http协议访问】

5.2.3.3 上传镜像
//由于刚刚重启了docker服务,因此registry容器关闭需要启动
[root@johnnyg03 ~]# docker start registry 
registry

[root@johnnyg03 ~]# docker push 10.0.2.12:5000/busybox:latest
The push refers to repository [10.0.2.12:5000/busybox]
01fd6df81c8e: Pushed 
latest: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527

[root@johnnyg03 ~]# docker push 10.0.2.12:5000/nginx:latest
The push refers to repository [10.0.2.12:5000/nginx]
d874fd2bc83b: Pushed 
32ce5f6a5106: Pushed 
f1db227348d0: Pushed 
b8d6e692a25e: Pushed 
e379e8aedd4d: Pushed 
2edcec3590a4: Pushed 
latest: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
//可以看到已经上传成功
//在私有仓库(宿主机挂载目录)进行验证
[root@johnnyg03 ~]# ls /data/registry/docker/registry/v2/repositories/
busybox  nginx
//可以看到刚刚上传的两个镜像均已存在

5.2.4 下载镜像从私有仓库

5.2.4.1 修改docker的daemon.json守护进程文件
[root@johnnyg03 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries": ["10.0.2.12:5000"]		//添加此行(IP为需要被访问地址)
}
[root@johnnyg03 ~]# systemctl restart docker.service
5.2.4.2 下载镜像
[root@johnnyg02 ~]# docker pull 10.0.2.12:5000/busybox:latest
latest: Pulling from busybox
Digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee
Status: Downloaded newer image for 10.0.2.12:5000/busybox:latest
10.0.2.12:5000/busybox:latest

[root@johnnyg02 ~]# docker pull 10.0.2.12:5000/nginx:latest
latest: Pulling from nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3
Status: Downloaded newer image for 10.0.2.12:5000/nginx:latest
10.0.2.12:5000/nginx:latest

[root@johnnyg02 ~]# docker images
REPOSITORY                     TAG          IMAGE ID       CREATED         SIZE
10.0.2.12:5000/busybox         latest       beae173ccac6   7 months ago    1.24MB
10.0.2.12:5000/nginx           latest       605c77e624dd   7 months ago    141MB
//可以看到两个镜像已经成功下载
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值