Harbor镜像仓库实战指南:从安装到高级管理的全面解析 一、安装Docker 1.1 安装必要的依赖包 1.2 添加软件源的GPG密钥及docker源 1.2.1 添加Docker源的GPG密钥 1.2.2 添加Docker源 1.3 选择安装指定稳定版 1.3.1 查询可以安装的Docker版本信息 1.3.2 指定Docker版本安装 1.3.3 查看Docker信息 1.4 Docker的使用 1.4.1 查看Docker服务状态 1.4.2 停止Docker服务 1.4.3 启动Docker服务 1.4.4 重启Docker服务 二、安装Harbor仓库 2.1 下载安装 Harbor 2.1.1 获取Harbor最新稳定版 2.1.2 下载离线Harbor 2.1.3 解压Harbor文件 2.1.4 配置Harbor 2.1.5 安装并启动trivy漏洞扫描工具 2.1.6 查看运行中的Harbor相关容器 2.1.7 查看Harbor相关端口 2.1.8 查看本机IP 2.2 安装Docker-compose 2.2.1 获取Docker-compose可用版本 2.2.2 指定Docker-compose版本下载 2.2.2 赋予Docker-compose执行权限 2.2.3 查看Docker-compose版本 2.2.4 启动加载Harbor 2.2.5 Harbor的启停 2.2.5.1 查看Harbor服务状态 2.2.5.2 停止Harbor服务 2.2.5.3 启动Harbor服务 2.2.5.4 重启Harbor服务 2.2.5.5 停止并删除容器 2.2.5.6 创建并启动容器 2.3 修改admin密码 2.3.1 在Harbor web界面里直接修改 2.3.2 通过Harbor配置文件修改 三、Harbor仓库使用 3.1 Docker 推送命令 3.1.1 在项目中标记镜像 3.1.2 推送镜像到当前项目 3.2 Podman 推送命令 3.2.1 推送镜像到当前项目 3.3 Helm 推送命令 3.3.1 在项目中打包 chart 3.3.2 推送 chart 到当前项目 3.4 CNAB 推送命令 3.4.1 推送 CNAB 到当前项目 2.5 Harbor登录、镜像推/拉 2.5.1 登录报错 2.5.2 查看本地镜像 2.5.3 本地镜像打标签并推送至Harbor 2.5.3.1 本地镜像打标签 2.5.3.2 查看打标签后的镜像 2.5.3.3 打标签后的镜像推送至Harbor 2.5.4 拉取dockerhub镜像,打标签并推至Harbor 2.5.4.1 从dockerhub拉取镜像 2.5.4.2 查看目前的镜像 2.5.4.3 为拉取的镜像打标签 2.5.4.4 打标签后的镜像推送至Harbor 2.5.5 Harbor仓库镜像保存位置
注意: 由于Harbor是基于Docker Registry V2版本,所以Docker Engine必须大于20.10.10-ce+版本,docker-compose必须要大于v1.18.0+版本!
superman@app:~$ sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

superman@app:~$ sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

superman@app:~$ sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

例如5:27.3.1-1~ubuntu.22.04~jammy。
superman@app:~$ sudo apt-cache madison docker-ce | awk '{ print $3 }'

superman@app:~ $ VERSION_STRING = 5:27.3.1-1~ubuntu.22.04~jammy
superman@app:~ $ sudo apt-get install docker-ce = $VERSION_STRING docker-ce-cli = $VERSION_STRING -y containerd.io docker-buildx-plugin docker-compose-plugin


superman@app:~ $ sudo docker -v
superman@app:~ $ sudo docker version

Dokcer的状态查看|启动|停止|重启|开机自启。
superman@app:~$ sudo systemctl status docker

superman@app:~$ sudo systemctl stop docker

superman@app:~$ sudo systemctl start docker

superman@app:~$ sudo systemctl restart docker

Harbor官网地址: https://goharbor.io Harbor github地址: https://github.com/goharbor/harbor/releases 下载离线版本:harbor-offline-installer-v2.11.2.tgz
superman@app:~$ curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f4 | grep '.tgz'

superman@app:~$ wget https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz

superman@app:~$ sudo mkdir /data superman@app:~$ sudo tar -xf harbor-offline-installer-v2.11.2.tgz -C /data/

编辑harbor.yml配置文件
superman@app:~$ cd /data/harbor/ superman@app:/data/harbor$ sudo cp harbor.yml.tmpl harbor.yml superman@app:/data/harbor$ sudo vim harbor.yml
更改信息如下:
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.1.134 ---设置访问地址,可以是ip、主机名,不可以设置为127.0.0.1或localhost
# http related config
http: ---启用http
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80 ---默认http端口
# https related config
#https: ---启用https(注释则为禁用)
# https port for harbor, default is 443
#port: 443 ---默认https端口
# The path of cert and key files for nginx
#certificate: /your/certificate/path ---启用时,证书路径(禁用则注释)
#private_key: /your/private/key/path ---启用时,私钥路径(禁用则注释)
# enable strong ssl ciphers (default: false)
# strong_ssl_ciphers: false
......
# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor@12345 ---修改harbor登录密码
# Harbor DB configuration
database:
# The password for the root user of Harbor DB. Change this before any production use.
password: root@123 ---修改harbor数据库密码
......
# The default data volume
data_volume: /data ---修改harbor仓库数据目录(安装Harbor时会自动创建)
......
# The directory on your host that store log
location: /var/log/harbor
......
superman@app:/data/harbor$ sudo ./install.sh --with-trivy


应该是启动10个容器。
superman@app:/data/harbor$ sudo docker ps -a

superman@app:/data/harbor$ netstat -ntpl | grep docker

superman@app:/data/harbor$ hostname -I

github下载地址: https://github.com/docker/compose/releases
superman@app:/data/harbor$ curl -s https://api.github.com/repos/docker/compose/releases | grep 'tag_name' | sort | awk -F':' '{print $2}' | sed 's/\"//g' | sed 's/,//' | awk '{if(NR>1) print $0}'

https://github.com/docker/compose/releases/download/v2.30.2/docker-compose-linux-x86_64
superman@app:/data/harbor $ VERSION_COMPOSE =v2.30.2
superman@app:/data/harbor $ sudo curl -L "https://github.com/docker/compose/releases/download/ $VERSION_COMPOSE /docker-compose- $(uname -s) - $(uname -m) " -o /usr/local/bin/docker-compose

superman@app:/data/harbor$ sudo chmod +x /usr/local/bin/docker-compose

superman@app:/data/harbor$ docker-compose -v

superman@app:/data/harbor$ docker-compose -f /data/harbor/docker-compose.yml ps

注意: 如果harbor.yml配置修改了,要先执行"./prepare"命令进行配置载入,然后再重启harbor服务。
报错:
WARN[0000] /data/harbor/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
处理方法:
注释掉/data/harbor/docker-compose.yml里面的version相关信息。
superman@app:/data/harbor$ sudo vim /data/harbor/docker-compose.yml
#version: '2.3' ---注释掉此
services:
log:
image: goharbor/harbor-log:v2.11.2
container_name: harbor-log
restart: always
cap_drop:
- ALL
......
superman@app:/data/harbor$ sudo docker-compose stats

superman@app:/data/harbor$ sudo docker-compose stop

superman@app:/data/harbor$ sudo docker-compose start

superman@app:/data/harbor$ sudo docker-compose restart

数据保留在文件系统中,因此不会丢失任何数据
superman@app:/data/harbor$ sudo docker-compose down -v

superman@app:/data/harbor$ sudo docker-compose up -d

修改harbor的登陆用户密码,则最好在harbor web界面里直接修改。





忘记harbor的web密码,建议删除data源数据的database,重新部署。
superman@app:~ $ cd /data/harbor
superman@app:/data/harbor $ sudo docker-compose down -v
superman@app:/data/harbor $ sudo rm -rf /data/database
superman@app:/data/harbor $ sudo vim harbor.yaml ---在这里重置或修改密码
superman@app:/data/harbor $ sudo ./prepare
superman@app:/data/harbor $ sudo docker-compose up -d
首先在Harbor web界面里最好创建一个自己需要的"项目"(或者使用默认的"library"项目),项目公开和私有: Public:所有用户对于公开项目都有读权限。 Private:私有项目只能被有特定用户权限的人去访问。 如创建一个公开项目"public",点击进去可以看到推送命令的信息提示。






docker tag SOURCE_IMAGE[:TAG] 192.168.1.134/public/REPOSITORY[:TAG]
docker push 192.168.1.134/public/REPOSITORY[:TAG]
podman push IMAGE_ID 192.168.1.134/public/REPOSITORY[:TAG]
helm package CHART_PATH
helm push CHART_PACKAGE oci://192.168.1.134/public
cnab-to-oci push CNAB_PATH --target 192.168.1.134/public/REPOSITORY[:TAG] --auto-update-bundle
superman@app:/data/harbor$ docker login 192.168.1.134

解决办法:
编辑docker启动文件,在ExecStart=/usr/bin/dockerd后面添加--insecure-registry=192.168.1.134。
superman@app:/data/harbor$ sudo vim /usr/lib/systemd/system/docker.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.1.134 -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
......
修改过后重启docker, 重启Harbor服务
superman@app:/data/harbor$ sudo systemctl daemon-reload && systemctl restart docker superman@app:/data/harbor$ sudo docker-compose -f /data/harbor/docker-compose.yml restart

再次登录
superman@app:/data/harbor$ docker login 192.168.1.134

登录账号信息保存位置,若不删除后续登录,则无需输入用户名和密码
superman@app:~$ cat /root/.docker/config.json

superman@app:~$ docker images
superman@app:~$ docker tag goharbor/nginx-photon:v2.11.2 192.168.1.134/public/nginx-photon:v2

superman@app:~ $ docker images
superman@app:~ $ docker images | grep nginx

superman@app:~$ docker push 192.168.1.134/public/nginx-photon:v2



superman@app:~$ docker pull httpd:2.4

superman@app:~$ docker images | grep httpd

superman@app:~$ docker tag httpd:2.4 192.168.1.134/public/httpd:2.4

superman@app:~$ docker push 192.168.1.134/public/httpd:2.4


superman@app:~ $ ls /data/registry/docker/registry/v2/repositories/public
superman@app:~ $ ll /data/registry/docker/registry/v2/repositories/public

原文链接: https://mp.weixin.qq.com/s/PS8-UHQi4ZxWfB-2IUTlEw
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/291614/viewspace-3056080/ ,如需转载,请注明出处,否则将追究法律责任。