目录
二、配置docker仓库并安装docker compose相关命令
1. 将服务器证书和密钥复制到 Harbor 主机上的 /data/cert 文件夹中。
3. 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。您必须先创建相应的文件夹。
一、实验环境简介
- 使用独立主机部署harbor
- 使用docker compose 完成harbor部署
- 后期使用harbor 中的镜像来部署应用
1.网络配置
- ip地址:192.168.110.100/24
- 网关:192.168.110.2
- DNS:114.114.114.114
- 主机名:harbor.mydomain.com
2.关闭SELINUX并禁用防火墙
二、配置docker仓库并安装docker compose相关命令
1.配置仓库
[root@harbor ~]# cat /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
2.安装docker、docker compose
[root@harbor ~]# yum remove podman -y
[root@harbor ~]# yum -y install docker-ce docker-ce-cli docker-buildx-plugin docker-compose-plugin
[root@harbor ~]# systemctl enable --now docker
三、Harbor的安装
1.下载安装包
可以提前下载好然后上传
wget https://github.com/goharbor/harbor/releases/download/v1.10.19/harbor-offline-installer-v1.10.19.tgz
2.预先配置harbor通信需要使用的tsl证书
2.1 生成证书颁发机构证书
在生产环境中,您应该从 CA 获取证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令。
1. 生成 CA 证书私有密钥。
[root@harbor certs]# openssl genrsa -out ca.key 4096
2. 生成 CA 证书。
[root@harbor certs]# openssl req -x509 -new -nodes -sha512 -days 3650 \
> -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=MyPersonal Root CA" \
> -key ca.key \
> -out ca.crt
2.2 生成服务器证书
1. 生成私钥。
[root@harbor certs]# openssl genrsa -out harbor.mydomain.com.key 4096
2. 生成证书签名请求 (CSR)。
[root@harbor certs]# openssl req -sha512 -new \
> -key harbor.mydomain.com.key \
> -out harbor.mydomain.com.csr \
> -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.mydomain.com"
3. 生成 x509 v3 扩展文件。
无论您是使用 FQDN 还是 IP 地址连接到 Harbor 主机,都必须创建此文件,以便为 Harbor 主机生成符合使用者备用名称 (SAN) 和 x509 v3 扩展要求的证书。
[root@harbor certs]# vim v3.ext
[root@harbor certs]# cat v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.mydomain.com
DNS.2=mydomain.com
DNS.3=harbor
4. 使用该文件为您的 Harbor 主机生成证书。
[root@harbor certs]# openssl x509 -req -sha512 -days 3650 \
> -extfile v3.ext \
> -CA ca.crt -CAkey ca.key -CAcreateserial \
> -in harbor.mydomain.com.csr \
> -out harbor.mydomain.com.crt
2.3 向 Harbor 和 Docker 提供证书
生成 ca.crt、harbor.mydomain.com.crt和harbor.mydomain.com.key文件后,您必须将它们提供给 Harbor 和 Docker,然后重新配置 Harbor 以使用它们。
[root@harbor ~]# mkdir /data/certs -p
[root@harbor ~]# cd /data/certs/
1. 将服务器证书和密钥复制到 Harbor 主机上的 /data/cert 文件夹中。
cp harbor.mydomain.com.crt /data/certs/
cp harbor.mydomain.com.key /data/certs/
2. 将crt转换为cert ,以供 Docker 使用。
Docker 守护程序将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书。
[root@harbor certs]# openssl x509 -inform PEM \
> -in harbor.mydomain.com.crt \
> -out harbor.mydomain.com.cert
3. 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。您必须先创建相应的文件夹。
[root@harbor certs]# mkdir /etc/docker/certs.d/harbor.mydomain.com -p
[root@harbor certs]# cp ca.crt /etc/docker/certs.d/harbor.mydomain.com/
[root@harbor certs]# cp harbor.mydomain.com.cert /etc/docker/certs.d/harbor.mydomain.com/
[root@harbor certs]# cp harbor.mydomain.com.key /etc/docker/certs.d/harbor.mydomain.com/
4. 重新启动 Docker Engine。
[root@harbor certs]# systemctl restart docker
此时docker 就可以使用加密证书与harbor进行通信
3.部署或重新配置 Harbor
3.1 解压harbor安装包。
[root@harbor ~]# tar -zxf harbor-offline-installer-v1.10.19.tgz -C /usr/src/
[root@harbor ~]# cd /usr/src/harbor/
[root@harbor harbor]# ls
common.sh harbor.v1.10.19.tar.gz harbor.yml install.sh LICENSE prepare
[root@harbor harbor]# cp harbor.yml harbor-install-config.bak
3.2 harbor.yml 需要进行的修改。
3.3 common.sh需要进行的修改。
3.4 install.sh需要进行的修改。
3.5 安装构建Habor
[root@harbor harbor]# sudo ./install.sh
提示启动完成后,打开浏览器输入harbor仓库地址进行访问:
使用默认管理员用户以及密码登录
admin: Harbor12345
登录后选择新建项目,设置项目为非公开项目
3.6 从Docker 客户端登录 Harbor。
[root@harbor harbor]# docker login harbor.mydomain.com
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/#credential-stores
Login Succeeded
[root@harbor harbor]# ls ~/.docker/
config.json
[root@harbor harbor]# cat ~/.docker/config.json
{
"auths": {
"harbor.mydomain.com": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
}
}
四、测试推送拉取镜像
1.推送镜像
1.1 更改镜像标签
注意需要推送到harbor仓库的镜像命令格式为 harbor主机地址or 主机名/harbor内仓库名/镜像名:标签
[root@harbor harbor]# docker tag goharbor/clair-adapter-photon:v1.10.19 \
harbor.mydomain.com/myproject/clair-adapter-photon:v1.10.19
1.2 推送镜像
[root@harbor harbor]# docker push harbor.mydomain.com/myproject/clair-adapter-photon:v1.10.19
在浏览器中查看上传的镜像
注意:这里出错原因可能是web界面Harbor没有myproject这个项目!
1.3 拉取镜像
先删除已有的镜像
[root@harbor harbor]# docker rmi harbor.mydomain.com/myproject/clair-adapter-photon:v1.10.19
拉取
[root@harbor harbor]# docker pull harbor.mydomain.com/myproject/clair-adapter-photon:v1.10.19
验证是否拉取成功
[root@harbor harbor]# docker images
五、启动和停止
对于harbor的启动和停止,通过docker cmpose 控制,最好在harbor的解压目录下执行,
- 启动命令: docker compose up -d
- 停止命令: docker compose down
- 状态检查: docker compose stats