CentOS 7 搭建 Harbor2.4.1 Docker镜像仓库
上一篇文章我们使用了 registry 镜像来搭建Docker私有镜像仓库,但是使用体验不是很好,没有一个可管理的UI界面,管理很麻烦。
本篇文章将介绍一个新的搭建Docker镜像仓库的工具叫做 Harbor。Harbor 拥有一个易于管理的UI,提供多语言的切换,支持项目管理、日志记录、用户管理、仓库管理等等,是大多数人选择自建Docker镜像仓库的重要选择之一。
Harbor介绍
GitHub地址:https://github.com/goharbor/harbor
官方安装文档:https://goharbor.io/docs/2.4.0/install-config/
安装要求
安装Harbor会部署多个Docker容器,因此在部署前需要确定你得Linux主机是否安装Docker和Docker Compose.
硬件需求
Resource | Minimum | Recommended |
---|---|---|
CPU | 2 CPU | 4 CPU |
Mem | 4 GB | 8 GB |
Disk | 40 GB | 160 GB |
软件需求
Software | Version | Description |
---|---|---|
Docker engine | Version 17.06.0-ce+ or higher | 安装文档参考:CentOS 7 安装 Docker-CE 并配置阿里云加速器 |
Docker Compose | Version 1.18.0 or higher | 安装文档参考:docker-compose容器编排 |
Openssl | Latest is preferred | Used to generate certificate and keys for Harbor yum install -y openssl openssl-devel |
开放端口
需要开放以下端口:
Port | Protocol | Description |
---|---|---|
443 | HTTPS | Harbor portal and core API accept HTTPS requests on this port. You can change this port in the configuration file. |
4443 | HTTPS | Connections to the Docker Content Trust service for Harbor. Only required if Notary is enabled. You can change this port in the configuration file. |
80 | HTTP | Harbor portal and core API accept HTTP requests on this port. You can change this port in the configuration file. |
下载 Harbor 并解压
在Harbor的github发布页面下载Harbor在线安装包或离线安装包。
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz tar zxvf harbor-online-installer-v2.4.1.tgz
配置对 Harbor 的 Https 访问
默认情况下,Harbor不附带证书,也可以部署,但是是通过http访问,未进行加密,所以需要配置为使用https来访问,保证访问的安全性。
要配置https,就必须创建SSL证书,可以使用受信任的第三方CA签发的证书,比如 Let's Encrypt,也可以使用自签名的证书。
下面介绍如果使用自签名证书,这里假设我访问 Harbor 的域名是 harbor.chenxie.net ,并且已经配置好了DNS解析,域名已经指向我的这台机器。(直接添加 192.168.92.147 harbor.chenxie.net 到 /etc/hosts)
echo '192.168.92.147 harbor.chenxie.net' >> /etc/hosts
生成证书颁发机构证书
1. 生成 CA 证书私钥
yum install -y openssl openssl-devel openssl genrsa -out ca.key 4096
2. 生成 CA 证书
修改下面 -subj 中的信息为你自己的。
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Chengdu/L=Chengdu/O=example/OU=Personal/CN=harbor.chenxie.net" \ -key ca.key \ -out ca.crt
生成服务器证书
证书通常包含一个 .crt 文件和一个 .key 文件,比如 harbor.chenxie.net.crt 和 harbor.chenxie.net.key
1. 生成私钥
openssl genrsa -out harbor.chenxie.net.key 4096
2. 生成证书签名请求(CSR)
修改下面 -subj 中的信息为你自己的。
openssl req -sha512 -new \ -subj "/C=CN/ST=Chengdu/L=Chengdu/O=example/OU=Personal/CN=harbor.chenxie.net" \ -key harbor.chenxie.net.key \ -out harbor.chenxie.net.csr
3. 生成 x509 v3 扩展文件
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.chenxie.net DNS.2=chenxie.net DNS.3=harbor EOF
4. 使用 v3.ext 文件为 Harbor 主机创建证书
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in harbor.chenxie.net.csr \ -out harbor.chenxie.net.crt
向 Harbor 和 Docker 提供证书
生成 ca.crt , harbor.chenxie.net.crt 和 harbor.chenxie.net.key 文件之后,必须将它们提供给 Harbor和Docker并重新配置Harbor来使用到它。
1. 拷贝服务器证书和key到指定的目录
mkdir -p /data/cert cp harbor.chenxie.net.crt /data/cert/ cp harbor.chenxie.net.key /data/cert/
2. 转换 harbor.chenxie.net.crt 为 harbor.chenxie.net.cert ,用于Docker使用。
Docker守护进程会将 .crt 文件解释为CA证书,将 .cert 文件解释为客户端证书。
openssl x509 -inform PEM -in harbor.chenxie.net.crt -out harbor.chenxie.net.cert
3. 拷贝服务器证书,key和CA文件到Docker的证书目录。
mkdir -p /etc/docker/certs.d/harbor.chenxie.net/ cp harbor.chenxie.net.cert /etc/docker/certs.d/harbor.chenxie.net/ cp harbor.chenxie.net.key /etc/docker/certs.d/harbor.chenxie.net/ cp ca.crt /etc/docker/certs.d/harbor.chenxie.net/
注意:如果你将默认的nginx端口443改为了其他端口,则创建文件夹时应该加上端口,如将443改为了8888,创建文件夹应该如下:
mkdir -p /etc/docker/certs.d/harbor.chenxie.net:8888 或 mkdir -p /etc/docker/certs.d/harbor_IP:8888
4. 重启docker
systemctl restart docker
部署或重新配置Harbor
现在我们还没有部署Harbor,所以需要配置 harbor.yml 文件并在文件中配置证书指定 hostname和https.
配置 harbor.yml
cd harbor cp harbor.yml.tmpl harbor.yml
vim harbor.yml
配置 hostname 为: hostname: harbor.chenxie.net 配置 certificate 为:/data/cert/harbor.chenxie.net.crt 配置 private_key 为:/data/cert/harbor.chenxie.net.key 其他默认即可
运行安装脚本
我们已经配置好了 harbor.yml 文件,现在只需要运行 install.sh 即可启动安装,在线安装时间会比较长一点,请耐心等待。
安装 Harbor 有几种不同的配置安装方式:
- Just Harbor, without Notary, Trivy or Chart Repository Service
- Harbor with Notary
- Harbor with Trivy
- Harbor with Chart Repository Service
- Harbor with two or all three of Notary, Trivy, and Chart Repository Service
安装之前先装好 docker-compose
# 下载 docker-compose sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 添加执行权限 sudo chmod +x /usr/local/bin/docker-compose # 查看版本信息 # docker-compose --version docker-compose version 1.29.2, build 5becea4c
第一种方式(默认):
Just Harbor, without Notary, Trivy or Chart Repository Service.
也就是只安装 Harbor,不安装 Notary, Trivy or Chart Repository Service.
直接运行 install.sh 即可:
./install.sh
安装成功之后即可使用配置的地址进行访问 https://harbor.chenxie.net/ 进行访问,访问时会报证书错误,忽略即可,因为是自签证书。
默认管理账户为:
用户名:admin
密 码:Harbor12345
命令行登录和推送镜像测试:
1. 在后台新建一个项目,比如:myproject
2. 使用Docker命令登录Harbor,给镜像打Tag,然后推送到Harbor
a. 登录
[root@localhost ~]# docker login harbor.chenxie.net Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
b. 拉取一个ubuntu镜像,重新打tag并推送到Harbor
[root@localhost ~]# docker pull ubuntu [root@localhost ~]# docker tag ubuntu harbor.chenxie.net/myproject/ubuntu:v1.0 [root@localhost ~]# docker push harbor.chenxie.net/myproject/ubuntu:v1.0
c. 在Harbor控制台查看
其他方式安装
请参考官方文档:https://goharbor.io/docs/2.4.0/install-config/
共有 0 条评论