环境说明
服务器两台: 192.168.230.103(安装harbor) 192.168.230.101(测试harbor)操作系统:centos7.7docker版本:2021.3.10最新版 20.10.12docker-compose版本:2.3.1harbor版本:2.4.1
docker安装(101、103均安装)
清理存在的docker软件
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安装docker依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
下载docker安装所需的repo文件
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install -y docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
设置开机自启动
systemctl enable docker
查看是否启动成功
docker version
103 上docker添加配置文件
vim /etc/docker/daemon.json 添加如下内容
{"insecure-registries":["192.168.230.103"]}
注:即使启用https后,103仍然需要配置该项内容,否则在用 docker login命令登录时会出错Error response from daemon: Get "https://harbor103.com/v2/": unauthorized: authentication required
103docker执行以下命令
systemctl daemon-reloadsystemctl restart docker
docker-compose安装(103)
到github搜docker-compose,下载最新版本即可
授权并改名
chmod +x docker-compose-Linux-x86_64mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
查看是否生效
docker-compose version
harbor安装(103)
必要条件
docker及docker-compose已经安装
安装openssl:yum install openssl -y
修改101、103上hosts文件
echo "192.168.230.103 harbor103.com" >> /etc/hosts
注:一定要带上.com,不要使用 harbor103 这样类似hostname的配置,否则使用docker push命令时会出现向docker.io推送镜像的情况导致出现,如下所示:
[root@localhost anchors]# docker push harbor103/test-public/alpine-amd64Using default tag: latestThe push refers to repository [docker.io/harbor103/test-public/alpine-amd64]8d3ac3489996: Preparing denied: requested access to the resource is denied
后续会大量使用 harbor103.com这个域名
配置https访问harbor(103上操作)
创建存放证书的目录
mkdir -p /data/certcd /data/cert
生成证书颁发机构证书
1、生成 CA 证书私钥
openssl genrsa -out ca.key 4096
2、生成 CA 证书
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor103.com" \ -key ca.key \ -out ca.crt
注:CN改为自己设置的域名
生成服务器证书
1、生成私钥
openssl genrsa -out harbor103.com.key 4096
2、生成证书签名请求 (CSR)
openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor103.com" \ -key harbor103.com.key \ -out harbor103.com.csr
3、生成 x509 v3 扩展文件
cat > v3.ext <<-EOFauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuthsubjectAltName = @alt_names[alt_names]DNS.1=harbor103.comDNS.2=harbor103DNS.3=harborEOF
注:DNS.1是域名,DNS.2是去掉com,DNS.3是hostname,本次搭建103的hostname是harbor,该内容来自官网介绍
4、使用 v3.ext 文件为您的 Harbor 主机生成证书
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in harbor103.com.csr \ -out harbor103.com.crt
5、将 harbor103.com.crt 转换为 harbor103.com.cert,供 Docker 使用
openssl x509 -inform PEM -in harbor103.com.crt -out harbor103.com.cert
6、将服务器证书、密钥和 CA 文件复制到 Harbor 主机(103)上的 Docker 证书文件夹中
mkdir -p /etc/docker/certs.d/harbor103.com/cd /data/certcp harbor103.com.cert /etc/docker/certs.d/harbor103.com/cp harbor103.com.key /etc/docker/certs.d/harbor103.com/cp ca.crt /etc/docker/certs.d/harbor103.com/
注:/etc/docker/certs.d/harbor103.com 该目录与域名保持一致,不要随意命名
7、在操作系统级别信任证书
cp harbor103.com.crt /etc/pki/ca-trust/source/anchors/harbor103.com.crtupdate-ca-trust
8、重启docker
systemctl restart docker
安装harbor
1、下载harbor
https://github.com/goharbor/harbor/releases 找到对应版本,下载离线安装版
如:harbor-offline-installer-v2.4.1.tgz
2解压
tar -zxvf harbor-offline-installer-v2.4.1.tgz -C /opt
3修改配置
cd /opt/harborcp harbor.yml.tmpl harbor.ymlvim harbor.yml
注:data_volume最好使用独立的目录只保存harbor的数据
4 安装
./install.sh
安装成功后可以通过浏览器访问harbor ui
至此,harbor安装完成
转换http和https后的操作
如果原本配置的http访问,改为https后的操作,如果是新装的,则无需操作
当修改harbor.yml文件中http和https相关参数后,执行以下命令重启(在/opt/harbor目录内执行)
./prepare # 根据 harbor.yml 配置生成docker-compose文件docker-compose down -v # 停止容器并移除存在的容器 docker-compose up -d # 启动docker容器
数据在配置文件中 data_volume 配置的有宿主机的挂载,因此数据不会丢失
但也造成另一个问题,如果修改admin密码,要通过web页面操作,修改配置文件没办法生效,除非删掉数据重新安装
其他命令
cd /opt/habordocker-compose stop # 暂停harbordocker-compose start # 启动harbor# 彻底删除harbordocker-compose down -v# 删掉harbor相关镜像,慎重docker images|grep goharbor|awk '{print $3}'|xargs docker rmi# 删掉harbor中的数据和镜像,在data_volume配置的目录中删掉所有和harbor相关的目录即可
harbor创建项目
后续将从docker客户端(101)向harbor推送镜像
操作前需要先将证书发送给客户端(从103发送到101)
scp /data/cert/ca.crt root@192.168.230.101:/etc/pki/ca-trust/source/anchors/
推送镜像至harbor(101操作)
# 查看证书是否存在ls /etc/pki/ca-trust/source/anchors/ #更新证书update-ca-trust extract#重启dockersystemctl restart docker#登录docker login harbor103.com
101上的docker无需配置 /etc/docker/daemon.json 中的insecure-registries参数 ,因为103已经配置https访问,而docker客户端与仓库的交互默认就是https.
登录之后就可以与仓库交互了
测试推送镜像到harbor私有仓库
# 拉取dockerhub的镜像docker pull alpine# 打标签docker tag alpine harbor103.com/test-public/alpine-amd64 # 推送docker push harbor103.com/test-public/alpine-amd64
可以看到已经推送成功
# 拉取arm64架构镜像docker pull --platform arm64 alpinedocker tag alpine的镜像id harbor103.com/test-public/alpine-arm64 docker push harbor103.com/test-public/alpine-arm64# 构建多版本 manifest listdocker manifest create harbor103.com/test-public/alpine harbor103.com/test-public/alpine-arm64 harbor103.com/test-public/alpine-amd64# 推送manifest listdocker manifest push harbor103.com/test-public/alpine --purge
推送完成后,在harbor ui上看到如下内容
之后通过命令docker pull harbor103.com/test-public/alpine拉取时会根据cpu架构不同拉取对应的镜像
关于harbor的更多使用请自行查找
参考链接
https://goharbor.io/docs/2.4.0/install-config/
https://goharbor.io/docs/2.4.0/install-config/configure-https/
https://blog.csdn.net/qq_39876923/article/details/117303719
https://www.cnblogs.com/operationhome/p/10868498.html
harbor私有仓库安装搭建-今日头条就分享到这里,想看更多harbor安装部署、harbor镜像仓库、部署harbor就www.1212sj.com。
评论