本文发布于Cylon的收藏册,转载请著名原文链接~
docker registry介绍
Registry用于保存docker镜像,包括镜像的层次结构和元数据,用户可自建Registry
,也可使用官方的Docker Hub
分类
- Sponsor Registry:第三方的registry,供客户和Docker社区使用
- Mirror Registry:第三方的registry,只让客户使用
- Vendor Registry:由发布Docker镜像的供应商提供的registry
- Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry
一个docker Registry上拥有两种功能:
- 提供镜像存储的仓库。
- 提供用户获取镜像时的认证功能。
- 同时提供当前服务器上所有可用镜像的搜索索引。
一个docker镜像仓库有仓库的名称,等同于yum的repostory。通常简称为repo。为了使的镜像和应用程序版本之间有意义上的关联关系。在docker一个仓库通常只存放一个应用程序的镜像。因此,这个仓库名就是应用程序名。通过给每个镜像额外添加一个组件叫tag
,来标识每一个镜像。通常镜像名称:标签repo_name:tag
才能唯一标识一个镜像。
为了可以快速创建registry,docker专门提供了一个程序包 docker-distribution
。https://hub.docker.com/r/distribution/registry/ regustry自身运行在容器中,而容器的文件系统会随着容器生命周期终止而删除,因此需要给registry定义存储卷,使用网络存储。
在yum的extras仓库有一个docker-registry
的程序包。docker-distribution的主配置文件在 /etc/docker-distribution/registry/config.yml
,所有上传的镜像存放在/var/lib/registry
。
$ yum info docker-registry
Available Packages
Name : docker-registry
Arch : x86_64
Version : 0.9.1
Release : 7.el7
Size : 123 k
Repo : extras/7/x86_64
Summary : Registry server for Docker
URL : https://github.com/docker/docker-registry
License : ASL 2.0
Description : Registry server for Docker (hosting/delivering of repositories and images).
配置docker registry访问
非 docker hub
必须给定registry的地址
端口
,如果不是顶层仓库还要给定用户名
。
docker push
默认基于https工作的,而服务器端使用的http,两者不兼容,需要标记为非加密、非安全的docker registry
。
$ docker push node02.com:5000/php
The push refers to repository [node02.com:5000/php]
Get https://node02.com:5000/v2/: http: server gave HTTP response to HTTPS client
编辑 /etc/docker/daemon.json
添加 insecure-registries
,并且名称一定要与仓库引用时使用的名称完全保持一致,多个以逗号分隔
{
"insecure-registries": ["node02.com:5000"]
}
push的镜像存放在 /var/lib/registry/
下,V2指的是registry的协议版本
$ ll /var/lib/registry/docker/registry/v2/
total 0
drwxr-xr-x 3 root root 20 Aug 28 23:31 blobs
drwxr-xr-x 3 root root 17 Aug 28 23:31 repositories
push时镜像会分层次,每一层都单独推送,单独存放。产生的镜像层次存放在 php/_layers/sha256/
,真正存放的路径为 /var/lib/registry/docker/registry/v2/blobs
下
$ ll /var/lib/registry/docker/registry/v2/repositories/php/_layers/sha256/
total 0
13bb1aa790b2a283bdeb26a9dd4afa0891e37252dd6f836e2bc8e1555903f7fd
256b176beaff7815db2a93ee2071621ae88f451bb1e198ca73010ed5bba79b65
3584183957db768fc11554dfd6b06ec41be02d7872cecb65aa5ba9f238c897e6
499f1709b835427d28bc4ddb1e7038a438f1a1272abfe5489d6c74cb69b51bec
6d33f059b806836d7e63f6f26f154b99a42abcc1d384da7569de593b8135f7fb
8158b516b87541f3641937087e8048977f48f9ced0bfaeb0bc007c1ea0d49b93
8fa12d754b796a48f42433fae8a8eee24b56679bba4e5648fa50b184622dd941
ca82288118de1328f65d428e6d2acc6a87ecf552ed5cc3698fde90cf76f3ebdb
d393fc3ffa9b40bfbddd978604e0d5249b0bb1a6e4953142d8b2c80fcc85bcb4
d9f1ee7bf8cab99a7362c98708edd26c2f622f13b8c74c3cafd6197442c20609
通过api获取中镜像与标签
$ curl http://192.168.50.27:5000/v2/game/tags/list
{"name":"game","tags":["0123-151422","0124-162847","0124-164112","0125"]}
查看仓库中内容
$ curl -XGET http://192.168.50.27:5000/v2/_catalog
{"repositories":["apiv1","game","php","tyapi"]}
本文发布于Cylon的收藏册,转载请著名原文链接~
链接:https://www.oomkill.com/2018/06/docker-registry/
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。