文章目录

  • 什么是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上上传镜像

公共代码仓库 什么是公共仓库_Docker_02


1.注册账号

公共代码仓库 什么是公共仓库_Docker_03

创建仓库

公共代码仓库 什么是公共仓库_上传_04

公共代码仓库 什么是公共仓库_私有仓库_05

仓库要是共有的

公共代码仓库 什么是公共仓库_公共代码仓库_06

点击create

公共代码仓库 什么是公共仓库_上传_07

公共代码仓库 什么是公共仓库_上传_08

1.

公共代码仓库 什么是公共仓库_公共代码仓库_09

公共代码仓库 什么是公共仓库_私有仓库_10

2.

公共代码仓库 什么是公共仓库_上传_11

3.

公共代码仓库 什么是公共仓库_公共代码仓库_12

公共代码仓库 什么是公共仓库_公共代码仓库_13

4.

公共代码仓库 什么是公共仓库_上传_14

5.

公共代码仓库 什么是公共仓库_上传_15

公共代码仓库 什么是公共仓库_公共代码仓库_16

6.

公共代码仓库 什么是公共仓库_上传_17

7.

公共代码仓库 什么是公共仓库_公共代码仓库_18

公共代码仓库 什么是公共仓库_公共代码仓库_19

Registry的工作原理

公共代码仓库 什么是公共仓库_私有仓库_20


Docker Registry有三个角色,分别是index、registry和registry client

(1)index
负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
Web UI
元数据存储
认证服务
符号化
(2)registry

是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。

(3)Registry Client

Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

1.

公共代码仓库 什么是公共仓库_上传_21

2.

公共代码仓库 什么是公共仓库_Docker_22

3.

公共代码仓库 什么是公共仓库_上传_23

如何构建私有仓库

公共代码仓库 什么是公共仓库_Docker_24


公共代码仓库 什么是公共仓库_上传_25

Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以完成部署仓库,导入registry镜像

1.

公共代码仓库 什么是公共仓库_Docker_26


公共代码仓库 什么是公共仓库_私有仓库_27

公共代码仓库 什么是公共仓库_公共代码仓库_28

公共代码仓库 什么是公共仓库_Docker_29

公共代码仓库 什么是公共仓库_私有仓库_30

公共代码仓库 什么是公共仓库_公共代码仓库_31

公共代码仓库 什么是公共仓库_公共代码仓库_32

公共代码仓库 什么是公共仓库_Docker_33

2.基于镜像运行registry容器

公共代码仓库 什么是公共仓库_上传_34

公共代码仓库 什么是公共仓库_私有仓库_35

公共代码仓库 什么是公共仓库_Docker_36

3.将本地镜像上传至私有仓库,本地镜像在命名时需要加上仓库的ip和端口

公共代码仓库 什么是公共仓库_上传_37

公共代码仓库 什么是公共仓库_Docker_38

4.

公共代码仓库 什么是公共仓库_公共代码仓库_39

先删除本地已经有的镜像

公共代码仓库 什么是公共仓库_私有仓库_40

可以看到拉取成功

公共代码仓库 什么是公共仓库_Docker_41

公共代码仓库 什么是公共仓库_私有仓库_42

5.

公共代码仓库 什么是公共仓库_私有仓库_43

公共代码仓库 什么是公共仓库_私有仓库_44

公共代码仓库 什么是公共仓库_公共代码仓库_45

公共代码仓库 什么是公共仓库_私有仓库_46

6.安装tree,查看/opt/registry/目录下的镜像数据

公共代码仓库 什么是公共仓库_公共代码仓库_47

公共代码仓库 什么是公共仓库_上传_48

公共代码仓库 什么是公共仓库_私有仓库_49

公共代码仓库 什么是公共仓库_公共代码仓库_50

让其他主机以选择非加密的方式访问本地私有镜像

1.封装一台新的主机 ser2 172.25.2.3

公共代码仓库 什么是公共仓库_上传_51

公共代码仓库 什么是公共仓库_私有仓库_52

2.在ser2上搭建docker

公共代码仓库 什么是公共仓库_私有仓库_53

公共代码仓库 什么是公共仓库_公共代码仓库_54

公共代码仓库 什么是公共仓库_Docker_55

公共代码仓库 什么是公共仓库_Docker_56

公共代码仓库 什么是公共仓库_上传_57


3.查看本地的5000端口是否正常工作

公共代码仓库 什么是公共仓库_公共代码仓库_58

4.ser2尝试从ser1拉取镜像

公共代码仓库 什么是公共仓库_上传_59

5.

公共代码仓库 什么是公共仓库_Docker_60

公共代码仓库 什么是公共仓库_Docker_61

公共代码仓库 什么是公共仓库_公共代码仓库_62

公共代码仓库 什么是公共仓库_私有仓库_63

公共代码仓库 什么是公共仓库_上传_64


公共代码仓库 什么是公共仓库_公共代码仓库_65

6.拉取成功

公共代码仓库 什么是公共仓库_上传_66

公共代码仓库 什么是公共仓库_私有仓库_67

为本地私有仓库创建加密,创建签名证书

1.给私有仓库生成证书和key

公共代码仓库 什么是公共仓库_私有仓库_68

公共代码仓库 什么是公共仓库_Docker_69

2.在本地做解析

公共代码仓库 什么是公共仓库_公共代码仓库_70

3.

公共代码仓库 什么是公共仓库_上传_71

4.删除之前的registry1仓库,也可以不用删除,起一个别的名字

公共代码仓库 什么是公共仓库_Docker_72

5.再次构建容器(私有仓库)

公共代码仓库 什么是公共仓库_上传_73

公共代码仓库 什么是公共仓库_公共代码仓库_74

6.想要在本地上传镜像时

公共代码仓库 什么是公共仓库_Docker_75

7.创建证书存放目录,并复制证书

公共代码仓库 什么是公共仓库_Docker_76

公共代码仓库 什么是公共仓库_Docker_77

公共代码仓库 什么是公共仓库_Docker_78

8.再次上传时,正确

公共代码仓库 什么是公共仓库_私有仓库_79


公共代码仓库 什么是公共仓库_公共代码仓库_80

公共代码仓库 什么是公共仓库_公共代码仓库_81

公共代码仓库 什么是公共仓库_Docker_82


9.尝试用另一台主机ser2从ser1的私有仓库上面拉取镜像

公共代码仓库 什么是公共仓库_Docker_83

10.把ser1上的证书传给ser2

公共代码仓库 什么是公共仓库_私有仓库_84

公共代码仓库 什么是公共仓库_私有仓库_85

11.拉取测试

公共代码仓库 什么是公共仓库_公共代码仓库_86

配置用户权限 ,给证书加密

如果想要控制registry的使用权限,使其只有在登录用户名和密码之后才能使用的话

还需要做额外的设置,registry的用户名密码文件可以通过htpasswd来生成。

公共代码仓库 什么是公共仓库_上传_87

(1)在服务端设置用户密码并查看

cd /etc/docker/
mkdir auth
docker run --entrypoint htpasswd registry -Bbn admin westos> auth/htpasswd

公共代码仓库 什么是公共仓库_上传_88


(2)再次创建仓库

公共代码仓库 什么是公共仓库_Docker_89

(3)

公共代码仓库 什么是公共仓库_Docker_90

公共代码仓库 什么是公共仓库_Docker_91

(4)认证失败

公共代码仓库 什么是公共仓库_公共代码仓库_92

公共代码仓库 什么是公共仓库_私有仓库_93

(5)路径的问题,重新运行

公共代码仓库 什么是公共仓库_上传_94

公共代码仓库 什么是公共仓库_私有仓库_95

公共代码仓库 什么是公共仓库_Docker_96

(5)登录成功

公共代码仓库 什么是公共仓库_公共代码仓库_97

公共代码仓库 什么是公共仓库_私有仓库_98

(6)

公共代码仓库 什么是公共仓库_上传_99

公共代码仓库 什么是公共仓库_私有仓库_100

公共代码仓库 什么是公共仓库_私有仓库_101

公共代码仓库 什么是公共仓库_Docker_102

(7)

公共代码仓库 什么是公共仓库_公共代码仓库_103

公共代码仓库 什么是公共仓库_私有仓库_104

(8)

公共代码仓库 什么是公共仓库_公共代码仓库_105

公共代码仓库 什么是公共仓库_公共代码仓库_106


还可以为仓库添加webui界面,下载包,添加配置就好