一、什么是Harbor
二、Harbor有那些功能
三、Harbor的结构
Harbor架构有六大核心组件:Proxy ,Registry,Core services,Databases,Job services,Log collector(Harbor-log)
- services:作为Harbor的核心功能,提供以下几个服务:
Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。
总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。
其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成
四、搭建Harbor
①试验环境
主机 | IP | 环境 |
Server | 192.168.226.121 | docker docker-compose harbor harbor-offline-v1.1.2 |
Client | 192.168.226.122 | docker |
②部署Harbor(192.168.226.121)
安装harbor到/usr/local/
修改配置文件harbor.cfg
第五行
hostname = 192.168.226.121
执行Harbor安装sh /usr/local/harbor/install.sh
查看下进行环境 docker ps
登录Harbor仓库(默认账号:admin 默认密码:Harbor12345)
创建一个项目
③本地登录并进行测试上传和下载
#登录
docker login -u admin -p Harbor12345 https://127.0.0.1
#上传镜像
#先将镜像打上标签
docker tag nginx 127.0.0.1/mogu/nginx:ssssl
docker push nginx 127.0.0.1/mogu/nginx:ssssl
#下载镜像
docker pull nginx
④其他客户端对其访问
由于Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。
解决方案:在dockerserver文件中手动添加仓库服务器地址
vim /usr/lib/systemd/system/docker.service
添加 --insecure-registry 192.168.226.121
systemctl daemon-reload
systemctl restart docker
再次登录 docker login -u admin -p Harbor12345 http://192.168.226.121(当然如果你还是无法登录,建议去看下server有没有挂掉)
五、管理维护Harbor
可以使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与docker-compose.yml 相同的目录中运行。
#关闭所有模块
docker-compose down -v
#填充配置
./prepare
#再次启动Harbor
docker-compose up -d
①创建Harbor用户
②对Client端进行操作
docker logout 192.168.226.121
#登入
docker login 192.168.226.121
#下载仓库镜像
docker pull 192.168.226.121/mogu/nginx:ssssl
六、移除 Harbor 服务容器同时保留镜像数据/数据库
在server上进行操作
docker-compose down -v
#如果需要重新部署,需要移除Harbor服务容器全部数据
#持久数据,如镜像,数据库等在宿主机的/data目录下,日志在宿主机的/var/log/Harbor目录下
rm -rf /data/database
rm -rf /data/registry
五、远程同步
①安装第二台Harbor(192.168.226.122)
具体安装步骤重复上述
②配置同步(192.168.226.121)
我们刷新下被同步的仓库