企业级镜像仓库 harbor
企业级镜像仓库 harbor
前言
a. 本文主要为 Docker的视频教程 笔记。
b. 环境为 CentOS 7.0 云服务器
c. 上一篇:跨 Docker 宿主机网络 overlay 类型
harbor 所具备的 docker-registry 不具备的优势:界面友好,有用户权限划分,删除镜像方便,可以配置 https
下载和安装
主要步骤:下载安装文件并解压,修改配置文件,执行脚本
具体安装步骤可参考 harbor 官方安装文档
由于使用云服务器无法从 github 上下载,先下载到本地后上传至云服务器。注意,如果 ssh 的端口号不是默认,需要在 scp 命令后紧跟 -P 以指定。
修改配置文件,将其中的 hostname 为自己服务器的外网 ip 地址,password 部分按需修改。同时需要需要注释 https 部分,否则会报错(如果启用 https,则自动将 http请求重定向到 https):
Error happened in config validation...
ERROR:root:Error: The protocol is https but attribute ssl_cert is not set
教学视频中的配置文件为 harbor.cfg,而我下载下来的为 harbor.yml,但其中的内容大致相同
在本地电脑(Ubuntu 18.04)中准备了镜像,推送到云服务器上。需要先在本地的 Docker 中配置信任该镜像站点(在 /etc/docker/daemon.json 中),在 insecure-registries 数组中添加服务器地址,否则会报 443端口拒绝连接:
还需要使用 docker login 命令登录,否则会报未授权:
成功上传镜像:
注意:上传镜像需要登录,而下载镜像则不需要
配置 https
下载申请到的证书。由于 harbor 的使用 Nginx 服务器,因此只需要 Nginx 的证书即可。将 hostname 改为 证书相匹配的域名,将 https 相关的注释去除,设置好证书的路径:
配置完成后,删除已经运行的容器,重新执行安装脚本 install.sh,之后可以使用域名访问,并可以发现默认使用了 https:
此时,删除 /etc/docker/daemon.json 中的 insecure-registries 配置,重启 Docker 服务。可以正常拉取镜像而不报错:
root@battor-OMEN:/home/battor# docker pull www.example.site/library/busybox_ana@sha256:96692dc2b25f83d085b6d6344d3c18ccbddc4b325907433a9ca4a805b7855421
sha256:96692dc2b25f83d085b6d6344d3c18ccbddc4b325907433a9ca4a805b7855421: Pulling from library/busybox_ana
Digest: sha256:96692dc2b25f83d085b6d6344d3c18ccbddc4b325907433a9ca4a805b7855421
Status: Downloaded newer image for www.example.site/library/busybox_ana@sha256:96692dc2b25f83d085b6d6344d3c18ccbddc4b325907433a9ca4a805b7855421
www.example.site/library/busybox_ana@sha256:96692dc2b25f83d085b6d6344d3c18ccbddc4b325907433a9ca4a805b7855421
参考
使用SCP命令上传文件
https://www.cnblogs.com/magicc/p/6490566.html