Docker 私有仓库与 Harbor 部署使用

目录

前言

一、本地私有仓库

1、拉取仓库镜像

2、在 daemon.json 文件中添加私有镜像仓库地址

3、运行 registry 容器

4、 Docker 容器的重启策略如下

5、为镜像打标签

6、上传到私有仓库

7、列出私有仓库的所有镜像

8、列出私有仓库的 centos 镜像有哪些 tag

9、删除原有 centos 镜像,测试私有仓库下载

二、Harbor

1、harbor介绍

2、Harbor功能介绍 

3、Harbor组成

4、Harbor的误区

三、Harbor 部署

1、下载harbor安装包

2、配置harbor

2.1  解压harbor

2.2  编辑配置文件

2.3  运行安装脚本

2.4  验证安装镜像

2.5  查看本地端口

3、web访问harbor管理界面

四、配置Harbor开机启动

1、配置harbor.service文件

2、Harbor开机启动

五、配置docker使用harbor仓库

1、配置docker

1.1  配置daemon.json

1.2  重启docker

1.3  命令行登录harbor

2、创建harbor项目

3、测试上传镜像

4、harbor界面验证镜像

5、验证镜像信息

6、测试下载镜像

6.1  删除存在的镜像

6.2  拉取镜像

6.3  从镜像启动容器并验证

6.4  验证端口

总结


前言

在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。这一篇介绍registry、harbor两种私有仓库搭建。

一、本地私有仓库

1、拉取仓库镜像

[root@c7-1 ~]#docker pull registry
......
[root@c7-1 ~]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    ea335eea17ab   2 weeks ago    141MB
registry     latest    b8604a3fe854   2 weeks ago    26.2MB
centos       7         eeb6ee3f44bd   2 months ago   204MB

2、在 daemon.json 文件中添加私有镜像仓库地址

[root@c7-1 ~]#cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.10.20:5000"],
"registry-mirrors": ["https://4iv7219l.mirror.aliyuncs.com"]
}

[root@c7-1 ~]#systemctl restart docker.service 

3、运行 registry 容器

[root@c7-1 ~]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    ea335eea17ab   2 weeks ago    141MB
registry     latest    b8604a3fe854   2 weeks ago    26.2MB
centos       7         eeb6ee3f44bd   2 months ago   204MB
[root@c7-1 ~]#docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
465355484f317cf31c4df4d2d90edf078bc6063cca7bd175b80c3abdb83a03ca
[root@c7-1 ~]#docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                                       NAMES
465355484f31   registry:latest   "/entrypoint.sh /etc…"   9 seconds ago   Up 8 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry
[root@c7-1 ~]#docker exec -it 465355484f31 /bin/sh
/ # ls
bin            etc            media          proc           sbin           tmp
dev            home           mnt            root           srv            usr
entrypoint.sh  lib            opt            run            sys            var
-itd --- 在容器中打开一个伪终端进行交互操作,并在后台运行
-v --- 把宿主机的 /data/registry 目录挂载到容器内(这个目录是 registry 容器中存放镜像文件的目录),来实现数据的持久化
-p --- 映射端口,访问宿主机的 5000 端口就访问到 registry 容器的服务了
--restart=always --- 这是重启的策略,在容器退出时总是重启容器
--name registry --- 创建容器命名为 registry
registry:latest --- 这个是刚才 pull 下来的镜像

4、 Docker 容器的重启策略如下

no --- 默认策略,在容器退出时不重启容器。
no-failure --- 在容器非正常退出时(退出状态非0),才会重启容器。
no-failure:3 --- 在容器非正常退出时重启容器,最多重启 3 次。
always --- 在容器退出时总是重启容器。
unless-stopped --- 在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

5、为镜像打标签

[root@c7-1 ~]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    ea335eea17ab   2 weeks ago    141MB
registry     latest    b8604a3fe854   2 weeks ago    26.2MB
centos       7         eeb6ee3f44bd   2 months ago   204MB
[root@c7-1 ~]#docker tag centos:7 192.168.10.20:5000/centos:test1
[root@c7-1 ~]#docker images
REPOSITORY                  TAG       IMAGE ID       CREATED        SIZE
nginx                       latest    ea335eea17ab   2 weeks ago    141MB
registry                    latest    b8604a3fe854   2 weeks ago    26.2MB
centos                      7         eeb6ee3f44bd   2 months ago   204MB
192.168.10.20:5000/centos   test1     eeb6ee3f44bd   2 months ago   204MB

6、上传到私有仓库

[root@c7-1 ~]#docker push 192.168.10.20:5000/centos:test1
The push refers to repository [192.168.10.20:5000/centos]
174f56854903: Pushed 
test1: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529

7、列出私有仓库的所有镜像

[root@c7-1 ~]#curl -XGET http://192.168.10.20:5000/v2/_catalog
{"repositories":["centos"]}

8、列出私有仓库的 centos 镜像有哪些 tag

root@c7-1 ~]#curl -XGET http://192.168.10.20:5000/v2/centos/tags/list
{"name":"centos","tags":["test1"]}

9、删除原有 centos 镜像,测试私有仓库下载

[root@c7-1 ~]#docker images
REPOSITORY                  TAG       IMAGE ID       CREATED        SIZE
nginx                       latest    ea335eea17ab   2 weeks ago    141MB
registry                    latest    b8604a3fe854   2 weeks ago    26.2MB
192.168.10.20:5000/centos   test1     eeb6ee3f44bd   2 months ago   204MB
centos                      7         eeb6ee3f44bd   2 months ago   204MB
[root@c7-1 ~]#docker rmi -f 192.168.10.20:5000/centos:test1 centos:7 &> /dev/null
[root@c7-1 ~]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    ea335eea17ab   2 weeks ago   141MB
registry     latest    b8604a3fe854   2 weeks ago   26.2MB
[root@c7-1 ~]#docker pull 192.168.10.20:5000/centos:test1 &> /dev/null
[root@c7-1 ~]#docker images
REPOSITORY                  TAG       IMAGE ID       CREATED        SIZE
nginx                       latest    ea335eea17ab   2 weeks ago    141MB
registry                    latest    b8604a3fe854   2 weeks ago    26.2MB
192.168.10.20:5000/centos   test1     eeb6ee3f44bd   2 months ago   204MB

二、Harbor

1、harbor介绍

Harbor是一个用于存储和分发docker镜像的企业级Registry服务器,由VMware开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distrubution,作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升了用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管理,另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

因为是vmware出品的,所以支持下面几种部署方式

  • 在线安装
  • 离线安装
  • ova安装,这个直接在vcenter上导入就可以了

官方最小配置

  • 2个cpu
  • 4g内存
  • 40g硬盘,因为是存储镜像的所以推荐硬盘大点

2、Harbor功能介绍 

  • 基于角色的访问控制:用户与docker镜像仓库通过项目进行组织管理,一个用户可以对多个镜像仓库在同一命名空间里有不同的权限。
  • 镜像复制:镜像可在多个Registry实例中复制。尤其适合负载均衡,高可用,混合云和多云场景。
  • 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAP支持:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值