1-4 使用harbor搭建docker的私有仓库

发布于:2023-02-16 ⋅ 阅读:(534) ⋅ 点赞:(0)

前言

Docker通过仓库下载镜像,仓库分为公共与私有。公共仓库即hub.docker.com。而私有仓库又分harbor和registry。其中harbor比registry,功能强大很多,并且支持web图形化管理,所以在企业中常用harbor。本文将从一台新主机搭建出harbor仓库。

搭建完成的Harbor登录界面

搭建完成的Harbor登录界面


环境准备

使用Ubuntu20.04系统,请保持系统一致。首先修改主机名:

cat /etc/issue
Ubuntu 20.04 LTS \n \l

sudo hostnamectl set-hostname harbor ; bash

然后修改时区为上海,最后同步互联网时间并写入BIOS:

sudo timedatectl set-timezone Asia/Shanghai

apt-get install ntpdate
sudo ntpdate cn.pool.ntp.org
sudo hwclock --systohc
date

安装docker-ce

harbor也是通过docker镜像和容器部署,下面使用清华源安装docker-ce社区版。

如果你过去安装过 docker,先删掉:

sudo apt-get remove docker docker-engine docker.io containerd runc

首先安装依赖:

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

信任 Docker 的 GPG 公钥:

mkdir -p /etc/apt/keyrings/
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

添加清华源软件仓库:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

最后安装:

sudo apt-get update
sudo apt-get install docker-ce

安装docker-compose

compose是用来启动 docker容器的工具,harbor部署需要用到。

直接在github下载二进制可执行文件,docker-compose v2.4.0版本:

wget https://github.com/docker/compose/releases/download/v2.4.0/docker-compose-linux-x86_64

移动到环境变量路径下,添加管理员执行权限:

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod ug+x /usr/local/bin/docker-compose

检查版本:

docker-compose version
Docker Compose version v2.4.0

下载与配置harbor

下载harbor最新版离线压缩包:

wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz

解压到opt目录,拷贝配置文件:

tar zxvf harbor-offline-installer-v2.5.3.tgz -C /opt

root@harbor:/opt/harbor# ls
common.sh  harbor.v2.5.3.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

cp harbor.yml.tmpl harbor.yml

配置harbor很简单,创建证书比较复杂。

vim harbor.yml

hostname: myharbor.com
...
http:
  port: 80
...
https:
  port: 443
  certificate: /opt/harbor/certs/myharbor.com.crt
  private_key: /opt/harbor/certs/myharbor.com.key
...
配置项 参数
hostname 自定义你的harbor网站域名。
http http服务,默认80端口。如果还有https,则跳转。
https https服务,默认443端口。需要添加2个证书路径。
certificate 认证证书 myharbor.com.crt 路径
private_key 私钥文件 myharbor.com.key 路径

生成证书和私钥

只要提供https服务,都需要证书与私钥。而harbor还需用到v3.etx(SAN)文件。根据下图创建证书文件myharbor.com.crt和私钥文件myharbor.com.key。
证书与私钥生成流程图

证书与私钥生成流程图

创建用于保存证书与私钥的目录:

mkdir /opt/harbor/certs
cd /opt/harbor/certs

新建ca.key文件:

sudo openssl genrsa -out ca.key 4096

通过ca.key创建ca.crt文件:

sudo openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=myharbor.com" \
-key ca.key \
-out ca.crt

新建myharbor.com.key文件:

sudo openssl genrsa -out myharbor.com.key 4096

通过myharbor.com.key创建myharbor.com.csr文件:

sudo openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=myharbor.com" \
-key myharbor.com.key \
-out myharbor.com.csr

新建v3.ext文件,DNS写上自定义的harbor域名:

cat << EOF > v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=myharbor.com
DNS.2=www.myharbor.com
EOF

根据ca.key,ca.crt,myharbor.com.csr,v3.ext合成myharbor.com.crt文件:

sudo openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in myharbor.com.csr \
-out myharbor.com.crt

最后把证书myharbor.com.crt和私钥myharbor.com.key的路径写到harbor配置文件。

ls /opt/harbor/certs
ca.crt  ca.key  ca.srl  myharbor.com.crt  myharbor.com.csr  myharbor.com.key  v3.ext

安装harbor

回到安装包目录,执行安装脚本。启用镜像扫描trivy,启用chart仓库。

cd /opt/harbor/
./install.sh  --with-trivy --with-chartmuseum

安装过程会检查前面安装的docker和docker-compose是否正常。然后load装载harbor镜像,最后run运行harbor容器,harbor搭建完成。

登录harbor界面:使用浏览器访问https://192.168.100.155,默认账密为admin/Harbor12345。




网站公告

今日签到

点亮在社区的每一天
去签到