编辑
2023-10-13
运维
00
请注意,本文编写于 467 天前,最后修改于 467 天前,其中某些信息可能已经过时。

目录

Why Harbor?
事前准备
Docker & Docker-Compose
部署
遇到的问题

Why Harbor?

Docker用的越来越多了,这边就想自建一下仓库,搜了一圈Harbor算是比较靠谱的选择,于是记录一下Harbor的部署过程。

部署环境为 Ubuntu 2004

事前准备

Docker & Docker-Compose

  1. 确认环境无残留
shell
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
  1. 安装证书与源
shell
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add the repository to Apt sources: echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
  1. 安装Docker
shell
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 安装Docker-Compose
shell
sudo apt-get install docker-compose
  1. 下载Horbor

Github releases

image.png

挑一个,后面带offline的就是离线包,带online的就是在线安装包,根据网络环境选择。

部署

注:这里暂时没记录https自签,后面再补,暂时先用http凑合测试一下

image.png

这里的harbor.yml.tmpl重命名为harbor.yml并修改其中几行就可以完成基础配置,相关其他字段可参考官网 修改其中的

yaml
# 修改hostname hostname: reg.mydomain.com # https: 先注释掉https的段落 # https port for harbor, default is 443 #port: 443 # The path of cert and key files for nginx #certificate: /your/certificate/path #private_key: /your/private/key/path #记住这一行的密码或者改成你想要的密码 harbor_admin_password: Harbor12345

运行prepare脚本启用HTTPS服务

shell
./prepare # 运行安装脚本 ./install.sh

遇到的问题

这边遇到了一个很神奇的问题,无法登录。 用户名和密码都是对的但是无法登录(401),找了一大圈最后去数据库中修改了密码的加密方式可以正常登录了,但是在此之前数据库中也修改了默认密码,但是还是不行。所以我把我做过的过程都记录一下。因为我也不知道是因为仅仅修改了加密方式还是修改了数据库和加密方式才能正常登录的。

  1. 登录数据库容器中。
shell
docker exec -it harbor-db /bin/bash
  1. 登录
shell
psql -U postgres -d postgres -h 127.0.0.1 -p 5432
  1. 切换到harbor所在的数据库
shell
\c registry
  1. 查看harbor_user表
shell
select * from harbor_user;
  1. 修改密码为初始Harbor12345,并修改加密方式为sha1
sql
update harbor_user set password='a71a7d0df981a61cbb53a97ed8d78f3e',salt='ah3fdh5b7yxepalg9z45bu8zb36sszmr',password_version='sha1' where username='admin'; #退出 /q exit

就可以正常登录了,不知道为什么,反正是可以用了。