容器(6)--Docker 仓库--3.企业级Harbor仓库管
Harbor企业级开源仓库
一 . Harbor仓库介绍
1) Harbor特性
基于角色的访问控制:用户和存储库是通过“项目”组织的,用户可以对多个镜像仓库统一命名空间拥有不同的权限。
镜像复制:可以基于具有多个Registry实例之间复制(同步)图像和图表。如果出现任何错误,Harbor会自动重试复制。非常适合于负载平衡、高可用性、多数据中心、混合和多云场景。
LDAP/AD支持:Harbor与现有企业LDAP/AD集成,用于用户身份验证和管理,并支持将LDAP组导入Harbor并为其分配适当的项目角色。
镜像删除和垃圾收集:镜像可以删除,其空间可以回收。
国际化:对多国语言支持(已拥有中文、英文、德文、日语和俄文);
图形化用户界面:用户可以轻松浏览、搜索存储库和管理项目。
审计管理:跟踪到存储库的所有操作。
RESTful API:用于大多数管理操作的RESTful API,易于与外部系统集成。一个嵌入式的Swagger用户界面可用于探索和测试API。
简单部署:提供在线和离线安装程序。此外,可以安装到vSphere平台的(OVA方式)虚拟设备。
2)Harbor 组件
proxy:Harbor的组件,如注册表、UI和令牌服务,都位于反向代理之后。代理将来自浏览器和Docker客户机的请求转发到各种后端服务。
Registry:负责存储Docker镜像和处理Docker推/拉命令。由于Harbor需要对映像进行访问权限控制,Registry将引导客户机访问令牌服务,以便为每个pull或push请求获取有效的令牌(token)。
Core Service:Harbor的核心功能,主要提供以下服务:
UI:提供图像化的图形用户界面,帮助人户管理镜像和对用户授权。
webhook: 为了及时获取registry上images的状态变化的情况,在Registry上配置webhook, 把状态变化传递UI模块;
Token令牌服务:负责根据用户在项目中的角色为每个docker push/pull命令颁发令牌。如果从Docker客户机发送的请求中没有令牌,注册表将把请求重定向到令牌服务。
Datebase:为了给core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
Job Services:提供镜像远程负责功能,能把本地镜像同步到其他harbor实例当中。
Log Collector:为了帮助监控Harbor运行,负责手机其他组件的log,供日后分析。
image.png image.png二 .Harbor 安装搭建
第一步 安装Docker-compose
线上安装(网好)
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.1/docker- compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
这一步国内不用加速器可能会比较慢!
image.png
Docker国内阿里云镜像加速传送门
Docker-compose官方安装文档链接
VMWare Harbor项目地址传送门
1.在配置文件添加镜像加速器,并重启docker
vim /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
2.下载 docker-compose 并修改执行权限
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.1/docker- compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
第二步 下载harbor 安装包并安装
GitHub地址:https://github.com/goharbor/harbor/releases #下载1.9.4版本
cd /var/local
rz harbor-offline-installer-v1.9.4.tgz
tar xf harbor-offline-installer-v1.9.4.tgz
cd harbor
[root@docker harbor]# ./prepare
然后运行install.sh安装脚本
[root@docker harbor]# ./install.sh
安装成功
image.png image.png image.png补充:
q1
./install.sh 执行后 出现下面错误
image.png
解决:检查防火墙状态, 防火墙处于关闭状态。
应开启防火墙。
q2
登录时 要先更改 harbor 配置文件
image.png改为 自己的ip(也可为域名,但要host解析等), 在harbor 配置文件中
可看到登录名与密码 admin Harbor12345(可更改)
image.png
三.Harbor 的使用
image.png-
创建项目
image.png
此时就看到创建的项目
image.png
2)创建用户
image.png
填入用户的信息
image.png image.png
3)把用户添加到项目中
image.png image.png image.png image.png
此时在 成员 处就可以看到 添加的成员
image.png
4)项目添加到仓库
客户端操作(pull&&push)
一、修改配置文件
vim /etc/docker/daemon.json
{ "insecure-registries":["192.168.88.250"] }
systemctl daemon-reload
systemctl restart docker
二、登录到docker私有仓库
[root@docker2 ~]# docker login 192.168.88.250
Username:
admin Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning.
See https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@docker2 ~]#
三、打标签以及push镜像
docker tag nginx:latest 192.168.88.250/test/nginx:v1 #test为我们创建的组
[root@docker2 ~]# docker push 10.0.0.128/test/nginx:v1
The push refers to repository [10.0.0.128/test/nginx]
22439467ad99: Pushed
b4a29beac87c: Pushed
488dfecc21b1: Pushed
v1: digest: sha256:62f787b94e5faddb79f96c84ac0877aaf28fb325bfc3601b9c0934d4c107ba94 size: 948
[root@docker2 ~]#
四、转入仓库发现镜像并pull
Snipaste_2020-02-22_21-30-24.jpg
Snipaste_2020-02-22_21-30-40.jpg
然后去到我们客户端服务器的终端
注:在此之前删除或者修改我们之前tag的以便于区分
[root@docker2 ~]# docker pull 192.168.88.250/test/nginx:v1
v1: Pulling from test/nginx
bc51dd8edc1b: Pull complete
66ba67045f57: Pull complete
bf317aa10aa5: Pull complete
Digest: sha256:62f787b94e5faddb79f96c84ac0877aaf28fb325bfc3601b9c0934d4c107ba94 Status: Downloaded newer image for 192.168.88.250/test/nginx:v1
192.168.88.250/test/nginx:v1
[root@docker2 ~]#