使用docker-compose部署最新版Harbor v2.3.2

Posted 品鉴初心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用docker-compose部署最新版Harbor v2.3.2相关的知识,希望对你有一定的参考价值。

Harbor 安装环境说明

环境名称 版本 备注
Linux发行版 18.04.5 LTS (Bionic Beaver) 暂无
docker-ce Docker version 20.10.7, build 20.10.7-0ubuntu1~18.04.1 apt install docker.ro,数据目录/data/docker
docker-compose docker-compose version 1.24.0, build 0aa59064 https://hkzww.com/ubuntu18-04%E4%B8%8B%E5%AE%89%E8%A3%85docker-compose-%E6%9C%80%E6%96%B0%E7%89%88.html
Harbor 2.3.2 最新2021/8/31
harbor安装方式 在线安装 暂无
harbor安装位置 /usr/local/harbor-2.3.2 暂无
harbor数据目录 /data/harbor 暂无

安装 Harbor

Harbor 的在线或者离线安装程序下载地址可以从这里获取。

# 使用在线安装程序
wget -P /usr/local wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-online-installer-v2.3.2.tgz
# 解压下载文件
tar zxf /usr/local/harbor-online-installer-v2.3.2.tgz -C /usr/local/
# 重命名
cd /usr/local 
mv harbor harbor-2.3.2
# 修改配置文件,根据自己的需求进行修改
cd harbor-2.3.2
cp harbor.yml.tmpl harbor.yml
# harbor.yml中按需修改或添加如下内容
## 修改hostname
hostname: harbor.test.com
## 修改admin密码
harbor_admin_password: xxxxxxx
## 暂时关闭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
## 添加禁止用户自注册
self_registration: off
## 设置只有管理员可以创建项目(可选)
# project_creation_restriction: adminonly
## 指定数据目录,若无则手动创建该目录
data_volume: /data/harbor

完成以上操作,保存退出!

# 执行安装脚本
bash /usr/local/harbor-2.3.2/install.sh

最终目录结构:

root@harbor:/usr/local/harbor-2.3.2# ll
total 60
drwxr-xr-x  3 root root  4096 Aug 31 06:41 ./
drwxr-xr-x 11 root root  4096 Aug 31 03:27 ../
drwxr-xr-x  3 root root  4096 Aug 31 03:27 common/
-rw-r--r--  1 root root  3361 Aug 18 08:53 common.sh
-rw-r--r--  1 root root  6066 Aug 31 03:34 docker-compose.yml
-rw-r--r--  1 root root  7919 Aug 31 03:34 harbor.yml
-rw-r--r--  1 root root  7840 Aug 18 08:53 harbor.yml.tmpl
-rwxr-xr-x  1 root root  2500 Aug 18 08:53 install.sh*
-rw-r--r--  1 root root 11347 Aug 18 08:53 LICENSE
-rwxr-xr-x  1 root root  1881 Aug 18 08:53 prepare*

查看Harbor容器的运行状态

root@harbor:/usr/local/harbor-2.3.2# docker-compose ps
      Name                     Command                  State                      Ports                
--------------------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)                                       
harbor-db           /docker-entrypoint.sh 96 13      Up (healthy)                                       
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                                       
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp           
harbor-portal       nginx -g daemon off;             Up (healthy)                                       
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp
redis               redis-server /etc/redis.conf     Up (healthy)                                       
registry            /home/harbor/entrypoint.sh       Up (healthy)                                       
registryctl         /home/harbor/start.sh            Up (healthy) 

docker-compose 基本命令

# 启动Harbor容器
docker-compose start

# 停止Harbor容器
docker-compose stop

# 重启Harbor容器
docker-compose restart

# 停止并删除Harbor容器,加上-v参数可以同时移除挂载在容器上的目录
docker-compose down

# 创建并启动Harbo容器,参数“-d”表示后台运行命令
docker-compose up -d

Harbor测试访问

浏览器输入以下地址或者域名访问Harbor的Web界面,账号密码:admin/xxxxxxxx

http://harbor.test.com

生成TLS证书,用于Harbor配置Https

# 创建存放证书的临时目录
mkdir /data/harbor/cert
cd !$

# 创建自签名根证书
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" -key ca.key -out ca.crt

# 如有以下报错:
Can\'t load /root/.rnd into RNG
140496635077056:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd

# 解决方法
cd /root
openssl rand -writerand .rnd

# 查看创建的证书
ca.crt  ca.key

# 产生证书签名请求
openssl genrsa -out harbor.test.com.key 4096
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" -key harbor.test.com.key -out harbor.test.com.csr

# 查看证书
ca.crt  ca.key  harbor.test.com.csr  harbor.test.com.key

# 为Registry主机产生证书
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.test.com
DNS.2=harbor
DNS.3=harbor.test.com
EOF

openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.test.com.csr -out harbor.test.com.crt
openssl x509 -inform PEM -in harbor.test.com.crt -out harbor.test.com.cert

# 查看证书
ca.crt  ca.key  ca.srl  v3.ext  harbor.test.com.cert  harbor.test.com.csr  harbor.test.com.key harbor.test.com.crt

# 创建Harbor的证书目录
mkdir /data/harbor/harbor-cert

# 拷贝harbor-registry证书到Harbor的证书目录
cp harbor.test.com.crt /data/harbor/harbor-cert
cp harbor.test.com.key /data/harbor/harbor-cert

Harbor安装后配置Https

# 进入Harbor的安装目录
cd /usr/local/harbor-2.3.2

# 停止并删除Harbor容器,加上-v参数可以同时移除挂载在容器上的目录
docker-compose down

# 修改harbor.yml配置文件
## 打开https配置
# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/harbor/harbor-cert/harbor.test.com.crt
  private_key: /data/harbor/harbor-cert/harbor.test.com.key
# 重新生成配置文件
 ./prepare
# 让Docker客户端默认使用Https协议访问Registry,需要去掉“insecure-registries”相关配置项
# 查看daemon.json文件中是否有"insecure-registries":["harbor.test.com"],如果有则将其删除掉

# 重新加载Docker的配置文件
systemctl daemon-reload

# 重启Docker
systemctl restart docker

# 创建并启动Harbor容器
docker-compose up -d

测试通过Https协议访问Harbor

通过浏览器访问

这里首先需要将上面产生的/data/harbor/cert/ca.crt导入到浏览器的受信任的根证书中,然后就可以通过Https协议访问Harbor的Web界面了,但不能保证所有浏览器都支持。访问地址是:https://harbor.test.com

关于火狐浏览器添加证书操作:点击”三“ --> 设置 --> 隐私与安全 --> 查看证书 --> 导入证书

关于google浏览器添加证书操作:点击”三“ --> 设置 --> 隐私设置和安全性 --> 安全 --> 管理证书 --> 导入证书

通过Docker命令来访问

# 在harbor主机或内网其他机器上
mkdir -p /etc/docker/certs.d/harbor.test.com
cp harbor.test.com.cert /etc/docker/certs.d/harbor.test.com
cp harbor.test.com.key /etc/docker/certs.d/harbor.test.com
cp ca.crt /etc/docker/certs.d/harbor.test.com
# 无需重启docker即可生效
docker login harbor.test.com

集成LDAP

可直接登入 harbor 在”配置管理“中修改”认证模式“,大概形式如下:

参考文档

以上是关于使用docker-compose部署最新版Harbor v2.3.2的主要内容,如果未能解决你的问题,请参考以下文章

Harbor 仓库使用介绍(高可用配置)

docker部署Jenkins,以及在Jenkins中使用宿主机的docker/docker-compose命令

centos7+docker 安装和部署crawlab分布式爬虫平台,并使用docker-compose管理docker

kong和konga的安装部署

ubuntu1804安装docker和docker-compose的最新2020详细教程

如何使用 docker-compose 将容器部署到谷歌云?