docker私有仓库Harbor部署及管理

目录

  • 一、介绍Harbor的组件
    • 1、Harbor自身组件
    • 2、Harbor依赖的外部组件
  • 二、部署Harbor私有仓库
    • 1、下载 Harbor 安装程序
    • 2、配置 Harbor 参数文件
    • 3、启动 Harbor并查看 Harbor 启动镜像
    • 4、查看 Harbor 启动镜像
    • 5、添加项目并且填写项目名称
    • 6、本机登录和推送镜像
    • 7、客户端登录和推送镜像
  • 三、维护管理Harbor
    • 创建 Harbor 用户
    • 创建项目开发人员

一、介绍Harbor的组件

1、Harbor自身组件

Core services(Admin Server)是Harbor的核心功能,主要提供以下服务:

  • API:提供Harbor RESTful API
  • UI:提供图形化界面,帮助用户管理Registry上的镜像, 并对用户进行授权。
  • Webhook:为了及时获取Registry上镜像状态变化的情况,在Registry上配置Webhook,把状态变化传递给UI模块。
  • Auth服务:负责根据用户权限给每个Docker Push/Pull命令签发Token。Docker客户端向Registry服务发起的请求,如果不包含Token,会被重定向到这里,获得Token后再重新向Registry进行请求。
  • Replication Job Service:提供多个Harbor实例之间的镜像同步功能。
  • Log Collector:为了帮助监控Harbor运行,负责收集其他组件的日志,供日后进行分析。

2、Harbor依赖的外部组件

Proxy(Nginx)
通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务

Registry(Docker官方镜像仓库)
负责储存Docker镜像,并处理docker push/pull命令

Database
为core services提供数据库服务

Log collector
负责收集其他组件的 log,供日后进行分析

二、部署Harbor私有仓库

服务器名称 服务
服务器:192.168.109.66 docker 20.10.5、docker-compose、harbor-offline-v1.2.2
服务器:192.168.109.77 docker 20.10.5

docker私有仓库Harbor部署及管理_第1张图片
docker 环境之前装好了直接快照

服务器:192.168.109.66

把harbor-offline-installer-v1.2.2.tgz压缩包和docker-compose包拖到Xshell里
//查看 Docker-Compose 版本判断安装是否成功
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

docker-compose -v

docker私有仓库Harbor部署及管理_第2张图片

1、下载 Harbor 安装程序

Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。
服务端主机需要安装 Python、Docker 和 Docker Compose。

前面拖入了harbor-offline-installer-v1.2.2.tgz包

wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

//有包直接解压
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

docker私有仓库Harbor部署及管理_第3张图片
docker私有仓库Harbor部署及管理_第4张图片

2、配置 Harbor 参数文件

vim /usr/local/harbor/harbor.cfg

//5 hostname = 192.168.109.66

docker私有仓库Harbor部署及管理_第5张图片

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)
例如 192.168.109.66 或。不要使用 localhost 或 127.0.0.1 为主机名。

3、启动 Harbor并查看 Harbor 启动镜像

sh /usr/local/harbor/install.sh

docker私有仓库Harbor部署及管理_第6张图片
docker私有仓库Harbor部署及管理_第7张图片

4、查看 Harbor 启动镜像

//查看镜像
docker images

//查看容器
docker ps -a

docker私有仓库Harbor部署及管理_第8张图片
docker私有仓库Harbor部署及管理_第9张图片

cd /usr/local/harbor/
docker-compose ps

docker私有仓库Harbor部署及管理_第10张图片

如果一切都正常,应该可以打开浏览器访问 http://192.168.109.66 的管理页面,默认 的管理员用户名和密码是 admin/Harbor12345。
docker私有仓库Harbor部署及管理_第11张图片
docker私有仓库Harbor部署及管理_第12张图片

5、添加项目并且填写项目名称

docker私有仓库Harbor部署及管理_第13张图片
docker私有仓库Harbor部署及管理_第14张图片

6、本机登录和推送镜像

此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,
Register 服务器在端口 80 上侦听。

//登录
docker login -u admin -p Harbor12345 http://127.0.0.1

//下载镜像进行测试
docker pull cirros

//镜像打标签
docker tag cirros 127.0.0.1/myproject/cirros:v1

//上传镜像到Harbor
docker push 127.0.0.1/myproject/cirros:v1

docker私有仓库Harbor部署及管理_第15张图片
docker私有仓库Harbor部署及管理_第16张图片

7、客户端登录和推送镜像

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报
如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜
像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

服务器:192.168.109.77

客户端直接登录私有仓库会出现以下问题
在这里插入图片描述

解决:

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.109.66 --containerd=/run/containerd/containerd.sock

docker私有仓库Harbor部署及管理_第17张图片

systemctl daemon-reload
systemctl restart docker

在这里插入图片描述
现在再在客户端登录和推送镜像就没问题了

docker login  -u admin -p Harbor12345 http://192.168.109.66

docker pull cirros

docker images

docker tag cirros 192.168.109.66/myproject/cirros:v2

docker push 192.168.109.66/myproject/cirros:v2

docker私有仓库Harbor部署及管理_第18张图片
docker私有仓库Harbor部署及管理_第19张图片

三、维护管理Harbor

服务器:192.168.109.66

可以使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与
docker-compose.yml 相同的目录中运行。

docker-compose down -v

vim harbor.cfg

./prepare

docker-compose up -d

docker私有仓库Harbor部署及管理_第20张图片

报错的情况:
docker-compose up -d
Creating network "harbor_harbor" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-25094fc09b3c -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))
//解决:关闭防火墙后,docker需要重启
systemctl restart docker
docker-compose up -d

创建 Harbor 用户

docker私有仓库Harbor部署及管理_第21张图片
docker私有仓库Harbor部署及管理_第22张图片

创建项目开发人员

docker私有仓库Harbor部署及管理_第23张图片
docker私有仓库Harbor部署及管理_第24张图片
docker私有仓库Harbor部署及管理_第25张图片-
服务器:192.168.109.77
测试创建的新用户能否使用

[root@localhost ~]#docker logout 192.168.109.66

Removing login credentials for 192.168.109.66
--------------------------------------------------

[root@localhost ~]#docker login 192.168.109.66
Username: zhangsan
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@localhost ~]#docker pull 192.168.109.66/myproject/cirros:v1
v1: Pulling from myproject/cirros
Digest: sha256:c7d58d6d463247a2540b8c10ff012c34fd443426462e891b13119a9c66dfd28a
Status: Downloaded newer image for 192.168.109.66/myproject/cirros:v1
192.168.109.66/myproject/cirros:v1
-------------------------------------------------------

[root@localhost ~]#docker images
REPOSITORY                        TAG       IMAGE ID       CREATED         SIZE
192.168.109.66/myproject/cirros   v1        3c82e4d066cf   12 months ago   12.6MB
192.168.109.66/myproject/cirros   v2        3c82e4d066cf   12 months ago   12.6MB
cirros                            latest    3c82e4d066cf   12 months ago   12.6MB

你可能感兴趣的:(docker)