文章目录

  • Harbor安装
  • 下载安装包
  • 编辑配置文件
  • 启动harbor
  • 测试
  • 登录harbor的web界面
  • 创建项目
  • 修改docker配置(如果启用https可以不配置)
  • 上传镜像测试
  • 启用https
  • 生成证书
  • 修改harbor配置文件
  • 重新运行harbor
  • 配置Docker通过https连接harbor
  • 测试



Harbor是一个由vameware开源的用于存储和分发Docker镜像的企业级Registry服务器。Harbor是基于Docker官方的registry二次开发的,但相对于Docker官方的Registry,Harbor的功能更加强大,提供了管理UI、RBAC、AD/LDAP集成、日志审计和镜像安全扫描等扩展功能。


Harbor官网:

https://goharbor.io/

Harbor安装

在此之前请确保你的服务器已经安装了docker和docker-compose,如果没有请先安装docker和docker-compose

下载安装包

从github下载对应的离线安装包:https://github.com/goharbor/harbor/releases

HARBOR 仓库地址 harbor官网_docker


也可以直接使用wget下载:

wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
编辑配置文件
tar xvf harbor-offline-installer-v2.5.1.tgz
cp harbor/harbor.yml.tmpl harbor/harbor.yml
vim harbor/harbor.yml	#harbor的配置文件,主要设置了以下几个配置
########harbor.yml#################
hostname: harbor-server1.linux.io	#harbor服务器的域名,也可以直接使用本机IP地址
http:	#http相关配置
  port: 80	#监听端口
#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: Passw0rd		#harbor界面的密码

# Harbor DB configuration
database:	#harbor后端数据库配置,可以保持默认
  password: root123
  max_idle_conns: 100
  max_open_conns: 900

data_volume: /data	#上传到harbor的镜像的保存目录
启动harbor
sudo hostnamectl set-hostname harbor-server1.linux.io	#设置一下hostname,和harbor.yml中保持一致
cd harbor/
./install.sh --with-trivy --with-chartmuseum	#--with-trivy表示启用镜像扫描功能,--with-chartmuseum表示启用chart仓库

测试

登录harbor的web界面

用户名为admin,密码为harbor.yml中配置的

HARBOR 仓库地址 harbor官网_上传_02

创建项目

HARBOR 仓库地址 harbor官网_linux_03

修改docker配置(如果启用https可以不配置)

修改/etc/docker/daemon.json文件,添加insecure-registries选项

$ cat /etc/docker/daemon.json
{
  "insecure-registries": ["harbor-server1.linux.io"]
}

重启docker服务,验证配置是否生效

systemctl restart docker
docker info

HARBOR 仓库地址 harbor官网_linux_04

上传镜像测试
#先添加一下hosts解析,如果有dns服务器添加一条解析就可以
echo "192.168.1.1 harbor-server1.linux.io" >>/etc/hosts
#任意选择一个镜像为其打上相应的tag
docker image tag nginx:latest harbor-server1.linux.io/base-images/nginx:latest
docker login harbor-server1.linux.io
docker pull habror-server1.linux.io/base-images/nginx:latest	#上传成功就表示harbor可以正常使用

启用https

生成证书
mkdir -p /apps/harbor/cert && cd /apps/harbor/cert
#生成根证书
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=linux.io" \
 -key ca.key \
 -out ca.crt

#生成harbor使用的证书
openssl genrsa -out harbor-server1.key 4096
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=linux.io" \
    -key harbor-server1.key \
    -out harbor-server1.csr
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=linux.io
DNS.2=harbor-server1.linux.io
EOF
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in harbor-server1.csr \
    -out harbor-server1.crt
修改harbor配置文件

修改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: /apps/harbor/cert/harbor-server1.crt
  private_key: /apps/harbor/cert/harbor-server1.key
重新运行harbor

先进入harbor安装包解压目录执行./prepare使https生效,然后重新运行harbor

cd /home/ubuntu/harbor
./prepare
docker-compose down
docker-compose up -d
配置Docker通过https连接harbor

需要将证书提供给所有需要连接此harbor服务器上传/下载镜像的docker服务器,确保可以正确上传/下载镜像。

/etc/docker/certs.d/harbor-server1.linux.io/	#创建一个和harbor服务器域名相同的目录
cp /apps/harbor/cert/ca.crt /etc/docker/certs.d/harbor-server1.linux.io/
cp /apps/harbor/cert/harbor-server1.key /etc/docker/certs.d/harbor-server1.linux.io/
cp /apps/harbor/cert/harbor-server1.crt /etc/docker/certs.d/harbor-server1.linux.io/harbor-server1.cert

将之前在/etc/docker/daemon.json中配置的insecure-registries选项删除掉,然后重启docker

测试

访问页面,已经变成https

HARBOR 仓库地址 harbor官网_linux_05


上传下载镜像测试

docker login harbor-server1.linux.io
docker tag alpine:latest harbor-server1.linux.io/base-images/alpine:latest
docker push harbor-server1.linux.io/base-images/alpine:latest
docker pull harbor-server1.linux.io/base-images/alpine:latest

上传和下载成功就代表没问题