文章目录
- 什么是Docker 仓库
- 私有仓库registry的优势
- 在Docker Hub上上传镜像
- Registry的工作原理
- 如何构建私有仓库
- 让其他主机以选择非加密的方式访问本地私有镜像
- 为本地私有仓库创建加密,创建签名证书
- 配置用户权限 ,给证书加密
什么是Docker 仓库
仓库是集中存放镜像文件的场所。
有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载
国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问
当然,用户也可以在本地网络内创建一个私有仓库
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
私有仓库registry的优势
有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。
使用私有仓库有许多优点:
1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,
只需要从私有仓库中下载即可;
2)提供镜像资源利用,针对于公司内部使用的镜像,
推送到本地的私有仓库中,以供公司内部相关人员使用。
目前Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。如果需要安装registry v2,只需下载registry:2.2即可。
Docker官方提供的工具docker-registry可以用于构建私有的镜像仓库
在Docker Hub上上传镜像
1.注册账号
创建仓库
仓库要是共有的
点击create
1.
2.
3.
4.
5.
6.
7.
Registry的工作原理
Docker Registry有三个角色,分别是index、registry和registry client
(1)index
负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
Web UI
元数据存储
认证服务
符号化
(2)registry
是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
(3)Registry Client
Docker充当registry客户端来维护推送和拉取,以及客户端的授权。
1.
2.
3.
如何构建私有仓库
Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以完成部署仓库,导入registry镜像
1.
2.基于镜像运行registry容器
3.将本地镜像上传至私有仓库,本地镜像在命名时需要加上仓库的ip和端口
4.
先删除本地已经有的镜像
可以看到拉取成功
5.
6.安装tree,查看/opt/registry/目录下的镜像数据
让其他主机以选择非加密的方式访问本地私有镜像
1.封装一台新的主机 ser2 172.25.2.3
2.在ser2上搭建docker
3.查看本地的5000端口是否正常工作
4.ser2尝试从ser1拉取镜像
5.
6.拉取成功
为本地私有仓库创建加密,创建签名证书
1.给私有仓库生成证书和key
2.在本地做解析
3.
4.删除之前的registry1仓库,也可以不用删除,起一个别的名字
5.再次构建容器(私有仓库)
6.想要在本地上传镜像时
7.创建证书存放目录,并复制证书
8.再次上传时,正确
’
9.尝试用另一台主机ser2从ser1的私有仓库上面拉取镜像
10.把ser1上的证书传给ser2
11.拉取测试
配置用户权限 ,给证书加密
如果想要控制registry的使用权限,使其只有在登录用户名和密码之后才能使用的话
还需要做额外的设置,registry的用户名密码文件可以通过htpasswd来生成。
(1)在服务端设置用户密码并查看
cd /etc/docker/
mkdir auth
docker run --entrypoint htpasswd registry -Bbn admin westos> auth/htpasswd
(2)再次创建仓库
(3)
(4)认证失败
(5)路径的问题,重新运行
(5)登录成功
(6)
(7)
(8)
还可以为仓库添加webui界面,下载包,添加配置就好