Skip to content

本地打好的镜像上传到 Harbor 仓库 ​

正文与配图来自原稿。示例环境:Harbor v2.4.1、地址 192.168.145.201:6789、镜像 thingsboard:v1 → .../thingsboard/thingsboard:3.4.2。请把 IP、端口、项目名、标签换成你自己的。
上一篇:本地 jar 如何制作成镜像并启动

1、Harbor 是什么? ​

Harbor 是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。

2、安装 Harbor ​

2.1、下载地址 ​

https://github.com/goharbor/harbor/tags

2.2、上传到服务器 ​

将离线安装包上传到服务器(原稿截图示意):

上传 Harbor 安装包到服务器

2.3、解压 ​

解压到 module 目录下:

bash
tar -zxvf harbor-offline-installer-v2.4.1.tgz -C /root/module/

解压 Harbor 安装包

解压后的 harbor 目录

2.4、修改配置文件 ​

拷贝一个 harbor.yml:

bash
[root@zd harbor]# cp harbor.yml.tmpl harbor.yml

进行修改:

bash
vi harbor.yml

修改 harbor.yml(hostname、端口等)

2.5、执行安装脚本 ​

bash
[root@zd harbor]# ./install.sh

执行 install.sh

最后启动很多的容器:

安装过程拉起多个容器

使用 docker ps 查看,需要启动的容器比较多:

docker ps 查看 Harbor 相关容器

2.5、配置开机自启 ​

bash
[root@zd ~]# vi /lib/systemd/system/harbor.service

然后增加下面的内容:

ini
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f  /root/module/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /root/module/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

编写 harbor.service

启用示例:

bash
systemctl daemon-reload
systemctl enable harbor
systemctl start harbor

3、访问 ​

text
http://192.168.145.201:6789/

Harbor 登录页

Harbor 控制台

到此 Harbor 镜像仓库就安装成功了~~~~~

2.6、验证 ​

2.6.1、登录 Harbor 仓库 ​

bash
[root@zd ~]# docker login 192.168.145.201:6789
Username: admin
Password:
Error response from daemon: Get "https://192.168.145.201:6789/v2/": http: server gave HTTP response to HTTPS client

解决办法

  1. 在服务器中,cd 到 docker 目录下:
bash
cd /etc/docker
  1. 看这个目录下有没有 daemon.json 这个文件,如果没有就手动创建,然后编辑:
bash
touch daemon.json
vi daemon.json
  1. 配置 Harbor 的 IP 和端口:
json
{"insecure-registries":["你的harborip:端口"]}

示例(对应本文环境):

json
{"insecure-registries":["192.168.145.201:6789"]}
  1. 重启 docker:
bash
systemctl restart docker
  1. 然后把所有的 docker 容器都起来:
bash
docker start 对应的容器名称

2.6.2、再次登录 ​

docker login 成功

2.6.3、新建项目 ​

Harbor 新建项目

项目创建完成

2.6.4、以 thingsboard:v1 为例推送到 Harbor ​

先给镜像打标签:

bash
[root@zd docker]# docker tag thingsboard:v1 192.168.145.201:6789/thingsboard/thingsboard:3.4.2

docker tag 打标签

推镜像到 Harbor 仓库:

bash
[root@zd docker]# docker push 192.168.145.201:6789/thingsboard/thingsboard:3.4.2

docker push 推送成功

查看 Harbor 仓库是否有镜像了:

Harbor 中已有 thingsboard 镜像


补充(辅) ​

  • 推送前请先完成本地镜像构建:本地 jar 如何制作成镜像并启动。
  • harbor.yml 里的 hostname、http.port(示例 6789)须与访问地址、insecure-registries、docker login / tag / push 中的地址一致。
  • HTTP 仓库必须配 insecure-registries;生产建议上 HTTPS,并收紧 Harbor 与 Docker 远程访问权限。
  • 标签格式:仓库地址/项目名/镜像名:版本,项目名需与 Harbor 里新建的项目一致(示例项目为 thingsboard)。

相关文章 ​