Docker的私有仓库Harbor

Harbor概述

1.Harbor定义

私有,自定义用户的形式登陆仓库,拉取或者上传镜像。(内部管理的用户)

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。

2.Docker Harbor的特性

(1)、基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中都可以拥有不同的权限;
(2)、基于镜像,在不同的harbor实例之间进行复制;
(3)、harbor自带一个数据库,AD/LDAP(类似于数据库中的表),对已经存在的用户进行认证和管理;
(4)、镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制),也可以回收镜像占用的空间;
(5)、图形化界面的,用户可以直接通过浏览器来对镜像仓库进行管理;
(6)、审计管理,所有对镜像仓库的操作都可以被记录溯源;
(7)、支持API操作,管理员可以基于API调用接口,和更多的其他的程序进行集成。
     端口:主机和主机之间的通信
     API接口:应用和应用之间的接口  

3.Docker Harbor的组件

Proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,仓库默认80端口,nginx作为前端的代理,在harbor当中,registry,UI,TOKEN,都在nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。
Registry:负责存储镜像,docker pull/push的命令都由其负责。用户进行访问控制,不同的用户对docker镜像有不同的读写权限。 Registry每次都会指向一个不同的token,token强制用户每次的pull、push都必须带一个合法的token(公钥对),Registry会通过公钥对,进行解密验证,身份合法才能指定操作。
●CORE SERVICE:harbor的核心功能,主要提供以下3个服务:
(1)、UI:提供图形化界面
(2)、Webhook:仓库上所有镜像的变化(增删改),都会传送给webhook,以显示在UI界面上。 (3)、Token服务:签发每一次push和pull的公钥对,用来和仓库之间进行权限认证。
●Database:harbor-db,为core services提供数据库存储服务,负责存储用户权限,审计日志,docker 镜像的分组和项目信息。
Job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上。
Log collector(harbor-log):统一日志收集工具。

Haobor都是基于docker 容器化部署的,docker-compose一件编排、安装。

Harbor部署

1.实验组件

20.0.0.10:docker1  安装仓库
20.0.0.20:docker2  客户端
20.0.0.30:docker3  安装仓库、实现远程同步

2.部署Docker-Compose服务

docker1:
cd /opt
--上传docker-compose-linux-x86_64--
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v

3.部署Harbor服务

cd /opt
--上传harbor-offline-installer-v2.8.1.tgz--
tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
--5--
hostname: 20.0.0.10

--12--
注释掉https
# https related config
#https:
  # https port for harbor, default is 443
  #port: 443
  # The path of cert and key files for nginx
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path

--34--
harbor_admin_password: 123456

Docker的私有仓库Harbor_第1张图片

4.启动Harbor

cd /usr/local/harbor/

#编译环境
./prepare

./install.sh

浏览器访问:20.0.0.10

Docker的私有仓库Harbor_第2张图片

Docker的私有仓库Harbor_第3张图片

Harbor实操

1.本地上传镜像

docker pull nginx:1.22.0
docker tag nginx:1.22.0 127.0.0.1/library/nginx:pup1
docker login -u admin -p 123456 http://127.0.0.1
docker push 127.0.0.1/library/nginx:pup1

Docker的私有仓库Harbor_第4张图片

Docker的私有仓库Harbor_第5张图片

Docker的私有仓库Harbor_第6张图片

2.新建项目本地上传镜像

新建项目

Docker的私有仓库Harbor_第7张图片

 创建用户

Docker的私有仓库Harbor_第8张图片

准备镜像

docker logout
docker login -u user-test -p Pupcarrot666 http://127.0.0.1
docker tag nginx:1.22.0 127.0.0.1/pup-project/nginx:pup2
docker images

Docker的私有仓库Harbor_第9张图片

 项目中新建成员

Docker的私有仓库Harbor_第10张图片

角色:
访客:只有读权限
开发者:读写权限,但是没有删除权限
维护人员:读写权限,修改其他配置项的权限
项目人员:对该项目拥有所有权限

推送镜像 

docker push 127.0.0.1/pup-project/nginx:pup2

Docker的私有仓库Harbor_第11张图片

Docker的私有仓库Harbor_第12张图片

Docker的私有仓库Harbor_第13张图片

3.其他客户端上传镜像

docker2:
vim /usr/lib/systemd/system/docker.service
--13修改--
ExecStart=/usr/bin/dockerd --insecure-registry 20.0.0.10
#Docker Registry交互默认使用https,而搭建私有镜像默认使用http

systemctl daemon-reload
systemctl restart docker
docker login -u user-test -p Pupcarrot666 http://20.0.0.10
docker pull tomcat
docker tag tomcat:latest 20.0.0.10/pup-project/tomcat:pup3
docker push 20.0.0.10/pup-project/tomcat:pup3

Docker的私有仓库Harbor_第14张图片

4.复制仓库

部署Docker-Compose服务

docker3:
cd /opt
--上传docker-compose-linux-x86_64--
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v

Docker的私有仓库Harbor_第15张图片

部署Harbor服务

cd /opt
--上传harbor-offline-installer-v2.8.1.tgz--
tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
--5--
hostname: 20.0.0.30

--12--
注释掉https
# https related config
#https:
  # https port for harbor, default is 443
  #port: 443
  # The path of cert and key files for nginx
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path

--34--
harbor_admin_password: 654321

Docker的私有仓库Harbor_第16张图片

启动Harbor

cd /usr/local/harbor/

#编译环境
./prepare

./install.sh

浏览器访问:20.0.0.30

Docker的私有仓库Harbor_第17张图片

Docker的私有仓库Harbor_第18张图片

Docker的私有仓库Harbor_第19张图片

仓库管理新建目标 

Docker的私有仓库Harbor_第20张图片

Docker的私有仓库Harbor_第21张图片

复制管理新建规则 

Docker的私有仓库Harbor_第22张图片

开始复制 

Docker的私有仓库Harbor_第23张图片

查看复制结果

Docker的私有仓库Harbor_第24张图片

Docker的私有仓库Harbor_第25张图片

Docker的私有仓库Harbor_第26张图片

你可能感兴趣的:(docker,容器,运维)