docker镜像仓库搭建(Harbor)
任务目标
- 完成docker镜像仓库的搭建
任务平台
- 物理设备—
- 操作系统:openEuler 22.03 LTS SP2
部署指南
任务一:环境需求
- 硬件配置
下图列出了部署 Harbor 的最低硬件配置和推荐的硬件配置。
- 网络端口
Harbor 要求在目标主机上打开以下端口
端口 | 协议 | 备注 |
---|---|---|
443 | HTTPS | Harbor 门户和核心 API 接受此端口上的 HTTPS 请求 |
4443 | HTTPS | 连接到适用于 Harbor 的 Docker 内容信任服务 |
80 | HTTP | Harbor 门户和核心 API 接受此端口上的 HTTP 请求 |
任务二:基础环境准备
任务三:部署
1 | wget https://github.com/goharbor/harbor/releases/download/v2.9.1/harbor-offline-installer-v2.9.1.tgz |
安装https证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17创建证书目录,并赋予权限
mkdir -p /data/cert/
chmod -R 777 /data/cert/
cd /data/cert
创建私钥
openssl genrsa -des3 -out harbor.key 2048
生成ca证书,ip为本机ip
openssl req -sha512 -new \
-subj "/C=CN/ST=hennan/L=zhengzhou/O=qishi/OU=qishi/CN=images.store.net.crt" \
-key harbor.key \
-out harbor.csr
备份证书
cp harbor.key harbor.key.org
转化为不带密码的私钥
openssl rsa -in harbor.key.org -out harbor.key
使用证书进行签名
openssl x509 -req -days 100000 -in harbor.csr -signkey harbor.key -out harbor.crt官方版
1
2
3创建存放目录
mkdir -p /data/harbor-ca
cd /data/harbor-ca- 生成证书颁发机构证书
- 生成 CA 证书私钥
1
openssl genrsa -out ca.key 4096
- 生成 CA 证书
1
2
3
4
5CN后的内容为ip或者域名
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=henan/L=zhengzhou/O=qishi/OU=qishi/CN=hub-docker.xxx.net" \
-key ca.key \
-out ca.crt- 生成服务器证书
- 生成私钥
1
2域名或ip命名
openssl genrsa -out hub-docker.xxx.net.key 4096- 生成证书签名请求 (CSR)
1
2
3
4openssl req -sha512 -new \
-subj "/C=CN/ST=henan/L=zhengzhou/O=qishi/OU=qishi/CN=hub-docker.xxx.net" \
-key hub-docker.xxx.net.key \
-out hub-docker.xxx.net.csr- 生成 x509 v3 扩展文件
1
2
3
4
5
6
7
8
9
10
11
12cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=hub-docker.xxx.net
DNS.2=hub-docker.xxx
DNS.3=hub-docker
EOF- 使用v3.ext生成证书
1
2
3
4
5openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in hub-docker.xxx.net.csr \
-out hub-docker.xxx.net.crt向 Harbor 和 Docker 提供证书
将服务器证书和密钥复制到存放 harbor使用证书的目录
1
2
3
4
5创建存放harbor使用证书的目录
mkdir -p /data/cert/
拷贝证书
cp hub-docker.xxx.net.crt /data/cert/
cp hub-docker.xxx.net.key /data/cert/转换证书,供docker使用
1
2
3
4
5
6
7
8
9openssl x509 -inform PEM -in hub-docker.xxx.net.crt -out hub-docker.xxx.net.cert
创建存放docker使用证书目录,命名方式为ip:端口,或者域名
mkdir -p /etc/docker/certs.d/hub-docker.xxx.net/
拷贝证书
cp hub-docker.xxx.net.cert /etc/docker/certs.d/hub-docker.xxx.net/
cp hub-docker.xxx.net.key /etc/docker/certs.d/hub-docker.xxx.net/
cp ca.crt /etc/docker/certs.d/hub-docker.xxx.net/
重启docker
systemctl restart docker
修改配置文件
1 | cp harbor.yml.tmpl harbor.yml |
执行安装
1 | ./install.sh --with-trivy |
浏览器输入ip加端口访问(添加hosts后,域名访问)
任务四:设置docker login 登录凭证加密(要拉取镜像的主机)
- 安装pass
1 | 基础环境 |
- 安装docker-credential-helpers
1 | 安装go基础环境 |
- 修改密码配置文件
1 | 生成密钥对 |
任务五:上传下载镜像(要拉取镜像的主机)
在需要拉取和上传镜像的主机上,修改daemon.json文件,再重启docker
1 | vi /etc/docker/daemon.json |
拉取和上传镜像
1 | 拉取nginx镜像做测试 |
任务六:cosign签名镜像(要拉取镜像的主机)
1 | mkdir -p /data/cosign |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云野阁!
评论