前提
- 安装docker
- 安装docker-compose
安装
- 下载包文件
从https://github.com/goharbor/harbor/releases这里下载最新的安装包
安装有两种方式:在线和离线,这里我们使用在线方式:
wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-online-installer-v2.6.1.tgz
- 解压
tar zxf harbor-online-installer-v2.6.1.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
- 修改配置
主要修改以下几个地方
# 改为自己服务器的IP或者设置的域名
hostname: 10.3.23.191
http:
# http开放的端口,默认为80,
port: 9902
# 需要注释掉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 ui登录密码,用户名为admin
harbor_admin_password: bidr.com.cn
database:
# 数据库密码
password: mypwd@123
# 数据存储目录
data_volume: /home/docker/harbor/data
如果想配置https+域名访问,需要修改以下几个地方
hostname: harbor.xxx.com
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /opt/ssl/xxx_bundle.crt
private_key: /opt/ssl/xxxx.key
其中xxx_bundle.crt
和xxxx.key
为你的证书和秘钥
- 安装
./install.sh
命令执行成功以后,会在当前目录harbor下生成docker-compose.yml文件
以后就可以通过docker-compose的命令进行操作了
docker-compose down
docker-compose up -d
接下来可以通过浏览器输入ip+端口9902直接访问harbor的页面了。
用户名是admin,密码是上面一步配置的密码
到这里,安装完成。
使用harbor
由于我们使用的http协议,所以使用时有些麻烦
- 修改
/etc/docker/daemon.json
如果/etc/docker/daemon.json
不存在,则创建。把harbor的ip及端口加入作为insecure-registries
文件内容如下:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["10.3.23.191:9902"]
}
由于我添加了docker镜像,所以多第二行。
然后执行以下命令重启docker
systemctl daemon-reload
systemctl restart docker
- 登录
需要在使用harbor机器上执行docker login
docker login 10.3.23.191:9902
# 输入用户名密码
经过以上两部,就可以使用docker pull及push命令
问题
问题1:重启harbor时,harbor-db无法启动
当重启docker或docker-compose down/up后,harbor-db一直重启,无法启动成功
查看harbor-db的日志tail -F /var/log/harbor/postgresql.log
Nov 9 10:14:28 bogon postgresql[30808]: ls: cannot access '/var/lib/postgresql/data': Operation not permitted
Nov 9 10:14:28 bogon postgresql[30808]: The files belonging to this database system will be owned by user "postgres".
Nov 9 10:14:28 bogon postgresql[30808]: This user must also own the server process.
Nov 9 10:14:28 bogon postgresql[30808]:
Nov 9 10:14:28 bogon postgresql[30808]: The database cluster will be initialized with locales
Nov 9 10:14:28 bogon postgresql[30808]: COLLATE: en_US.UTF-8
Nov 9 10:14:28 bogon postgresql[30808]: CTYPE: en_US.UTF-8
Nov 9 10:14:28 bogon postgresql[30808]: MESSAGES: C
Nov 9 10:14:28 bogon postgresql[30808]: MONETARY: C
Nov 9 10:14:28 bogon postgresql[30808]: NUMERIC: C
Nov 9 10:14:28 bogon postgresql[30808]: TIME: C
Nov 9 10:14:28 bogon postgresql[30808]: The default text search configuration will be set to "english".
Nov 9 10:14:28 bogon postgresql[30808]:
Nov 9 10:14:28 bogon postgresql[30808]: Data page checksums are disabled.
Nov 9 10:14:28 bogon postgresql[30808]:
Nov 9 10:14:28 bogon postgresql[30808]: initdb: error: directory "/var/lib/postgresql/data/pg13" exists but is not empty
Nov 9 10:14:28 bogon postgresql[30808]: If you want to create a new database system, either remove or empty
Nov 9 10:14:28 bogon postgresql[30808]: the directory "/var/lib/postgresql/data/pg13" or run initdb
Nov 9 10:14:28 bogon postgresql[30808]: with an argument other than "/var/lib/postgresql/data/pg13".
刚开始一直关注
initdb: error: directory "/var/lib/postgresql/data/pg13" exists but is not empty
这个问题,实际上问题是:ls: cannot access '/var/lib/postgresql/data': Operation not permitted
解决方式:
方式1:删除/var/lib/postgresql/data/pg13,重新up -d。这个方案虽然能启动harbor,但是数据也丢失了。不建议!
方式2:harbor镜像的版本是
v2.6.1
,本地docker版本是18.03.1.ce-1.el7.centos
。这个问题是由于本地docker版本太低,与harbor镜像版本不兼容导致的,只需要把docker升级至docker-ce-20.10.9-3.el7
,重新down / up -d 就没有问题了。
参考
https://goharbor.io/docs/2.0.0/install-config/