centos7 安装harbor仓库

前提

  1. 安装docker
  2. 安装docker-compose

安装

  1. 下载包文件
    https://github.com/goharbor/harbor/releases这里下载最新的安装包
    安装有两种方式:在线和离线,这里我们使用在线方式:
wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-online-installer-v2.6.1.tgz
  1. 解压
tar zxf  harbor-online-installer-v2.6.1.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
  1. 修改配置
    主要修改以下几个地方
# 改为自己服务器的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.crtxxxx.key为你的证书和秘钥

  1. 安装
./install.sh

命令执行成功以后,会在当前目录harbor下生成docker-compose.yml文件
以后就可以通过docker-compose的命令进行操作了

docker-compose down
docker-compose up -d

接下来可以通过浏览器输入ip+端口9902直接访问harbor的页面了。
用户名是admin,密码是上面一步配置的密码

image.png

到这里,安装完成。

使用harbor

由于我们使用的http协议,所以使用时有些麻烦

  1. 修改/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
  1. 登录
    需要在使用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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。