Harbor 是什么?
还记得 Docker Registry 么? 它是 Docker 官方提供的镜像仓库, 简单易用, 一键就可以部署, 使用.
虽然看起来不错, 但是 Registry 有些问题需要解决:
没有图形界面
没有用户权限控制
看不到镜像操作记录
仓库内镜像管理难度大
卖了个关子, 基于 Registry 有的问题, VMWare 公司开发了 Harbor, 用来解决 Registry 不完善的功能,
使用 Harbor, 你可以:
按项目管理镜像
明确记录用户对镜像仓库项目的操作, 包含 create,push ,delete, 甚至 pull!
有图形界面
有用户管理, 可以按需分配权限, 普通用户只能 pull
仓库内的镜像可以在图形界面删除与复制, 垃圾清理!
可以同步已有镜像仓库的镜像
有仓库管理 暂时没太关注这是干嘛用的
API 控制中心!
放几张效果图:
搭建步骤
安装 Docker,Docker-compose
下载 Harbor 离线包
配置 harbor.YAML
运行 ./install.sh
安装 Docker,Docker-compose
安装 docker
CentOS 安装 Docker-ce 并配置国内镜像
配置非 root 用户免 sudo 使用 docker, 立即生效
sudo usermod -aG docker 要使用的用户名 && newgrp docker
安装 docker-compose
- sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose #赋执行权限
下载 Harbor 离线包
在 GitHub 上的仓库地址 https://github.com/goharbor/harbor/releases
这里我们下载最新的 release v1.8.2 版本
[v1.8.2 离线版下载链接]
离线版本相对于 online 版本, 区别是它们都是使用的 Docker 镜像与 Docker-compose 工具, 不同的是
离线包中包含了所有需要的镜像导出包
在线包中只包含简单的配置文件
离线包占内存比较大, 差不多五百多兆, 因为我们公司一般是内网的线上环境, 这里就直接下载离线包了, 您可以选择自己喜欢或需要的版本, 以下使用离线包演示
可以直接用命令下载
wget -P /usr/local/src https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.2.tgz
这里直接下载到了 / usr/local/src 中
配置 harbor.YAML
先进入刚才下载到的目录, 解压离线包到 / usr/local/harbor 下
- cd /usr/local/src
- tar zxf harbor-offline-installer-v1.8.2.tgz -C /usr/local/
- cd /usr/local/harbor/
配置 harbor.YAML VIM harbor.YAML, 这里包含必要参数与可选参数, 这里只记录下必要参数
必要参数
hostname: 访问的 Harbor 服务的 IP 或域名 (UI 与命令行操作同样生效), 不要使用 localhost,127.0.0.1 或 0.0.0.0
data_volume: Harbor 中的数据挂载对应宿主机的位置, 如 / home/harbor/data
harbor_admin_password: admin 管理员密码, 默认管理员账号 / 密码为 admin/Harbor12345
database: Harbor 内部的数据库
password: 数据库密码
max_idle_conns: 连接池最大保持空闲数
max_open_conns: 同时最大开启的连接数
jobservice: 作业相关的服务
max_job_workers: 最大作业 worker 数
log: 日志相关
level: 日志输出等级
local: 本地日志保留相关
rotate_count: 日志文件在移除之前的旋转次数 Log files are rotated rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
rotate_size: 日志保持大小, 超出部分会删除旧日志
location: 存储日志的路径
external_endpoint: 开启此选项, 将会把日志转发到 syslog 服务中
protocol: 转发协议, 默认 TCP
host: syslog 服务的 ip
port: syslog 服务监听的端口号
必要参数基本就这些, 如果想配置更仔细些, 请参考 GitHub
运行 ./install.sh
- cd /usr/local/harbor
- ./install.sh #运行安装脚本
查看下用到哪些容器 docker-compose ps
到此安装完成
测试与使用 Harbor
访问 hostname 处配置的 IP
登录即可访问了, 这里使用就不多说了, 点点就了解个七七八八了
docker login 与 push 测试
接下来测试下, 使用 docker push 到这个仓库中
推荐再准备一台虚拟机, 如果没有的话, 可以先在 / usr/local/harbor 目录下执行 docker-compose down -v 关闭 harbor 各容器
推送镜像到非 https 的仓库时, 都需要设置非安全的仓库, VIM /etc/docker/daemon.JSON, 如图大家参考下
主要是
- {
- "insecure-registries": ["192.168.87.139:80"]
- }
我这里之前配置了另一个镜像仓库, 这里大家看看就好
需要注意的是: 刚才配置的 hostname 后需要写明 80 端口, 如果是域名则不需要
改好后, 重启 docker 服务 systemctl restart docker
登录仓库
docker login 192.168.87.139:80
初次登录需要使用用户名与密码, 这个是在 Harbor 用户管理中配置的, admin 用户拥有最高权限
这里用本地 java:latest 镜像举例
- # 重新 tag 方能推送
- docker tag java:latest 192.168.87.139:80/library/java:latest
- # 推送镜像
- docker push 192.168.87.139:80/library/java:latest
去 Harbor 的 UI 界面 -> 项目 -> library
我们点开 library/java, 可以查看具体的 tags
删除本地刚才 tag 的镜像, 我们 pull 下来试试
- # 删除本地镜像
- docker rmi 192.168.87.139:80/library/java:latest
- #pull Harbor 镜像仓库中的镜像
- docker pull 192.168.87.139:80/library/java:latest
一切正常, 后续自我去配置下可选的配置就可以了.
关闭 Harbor 服务
- cd /usr/local/harbor
- docker-compose down -v
删除 / 卸载 Harbor
先参考上一小节关闭 Harbor 服务, 关闭 Harbor
- rm -rf /usr/local/harbor
- rm -rf /usr/local/src/harbor
删除镜像这块就需要使用 docker rmi 了, 这里就不多说了, 刚才 docker-compose ps 时有显示用到哪些镜像
后记
本来打算暂时不更新博客的, 现在工作需要去看看镜像仓库相关的内容, 输出文档, 这里就一口气全写出来了, 先这样.
来源: https://www.cnblogs.com/hellxz/p/install_harbor.html