前言
Docker通过仓库下载镜像,仓库分为公共与私有。公共仓库即hub.docker.com。而私有仓库又分harbor和registry。其中harbor比registry,功能强大很多,并且支持web图形化管理,所以在企业中常用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。