使用 arm 架构实例搭建 Harbor

news2025/1/12 21:04:49

使用 arm 架构实例搭建 Harbor

  • 事情准备(使用甲骨文云上实例时的准备事项)
  • 第1步,准备自签名证书
  • 第2步,安装Docker-ce
  • 第3步,构建arm镜像
  • 第4步,安装Harbor
  • 第5步,访问Harbor
  • 第6步,上传镜像进行检证,
  • 其他,上传 v2.7.1 版本镜像的命令
  • 其他,使用 v2.6.4 版本时的命令

事情准备(使用甲骨文云上实例时的准备事项)

  • 准备好arm架构的实例,防火墙开放80和443端口,设置selinux为permissive

  • 设置好虚拟云网络的安全列表,开放80和443端口

  • 创建好客户密钥(甲骨文云用户详细=>客户密钥=>生成密钥)

第1步,准备自签名证书

我们创建一个目录/root/certs来保存证书,示例中使用"myserver.local"作为一级域名,"oracle.myserver.local"作为二级域名。

mkdir -p /root/certs; cd /root/certs
openssl genrsa -des3 -passout pass:123456 -out ca.key 2048
openssl rsa -in ca.key -passin pass:123456 -out ca.key
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/CN=myserver.local"
openssl genrsa -out tls.key 2048
openssl req -new -key tls.key -out tls.csr -subj "/CN=myserver.local"
cat > server.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.myserver.local
DNS.2 = *.oracle.myserver.local
EOF

openssl x509 -req -in tls.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out tls.crt -days 3650 -extfile server.ext

第2步,安装Docker-ce

这次咱们使用虚拟机搭建Harbor,需要使用docker和docker-compose,先来安装docker,

sudo yum install -y yum-utils
sudo yum-config-manager \
   --add-repo \
   https://download.docker.com/linux/centos/docker-ce.repo

cat >> /etc/yum.repos.d/docker-ce.repo << "EOF"
[centos-extras]
name=Centos extras aarch64 - $basearch
baseurl=http://mirror.centos.org/altarch/7/extras/aarch64/
enabled=1
gpgcheck=1
gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7-aarch64
EOF

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker

安装docker-compose,2022年10月2日时点最新版本是2.11.2版,最新版本请查看https://github.com/docker/compose/releases,

sudo curl -L https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

配置 docker 的 dns,

vi /etc/docker/daemon.json

--- add
{
  "dns": ["8.8.8.8"]
}
---
sudo systemctl daemon-reload
sudo systemctl restart docker

第3步,构建arm镜像

构建过程的录屏: https://www.bilibili.com/video/BV1ro4y187ov

Docker Hub上并没有Harbor arm架构的镜像,所以需要咱们自己构建arm架构的镜像,直接在甲骨文arm架构的虚拟机上执行下面命令,全部完成需要15-30分钟,

sudo yum install -y git
git clone https://github.com/goharbor/harbor-arm.git; cd harbor-arm
git clone --branch release-2.7.0 https://github.com/goharbor/harbor.git src/github.com/goharbor/harbor

make compile_redis
make prepare_arm_data
make pre_update
make compile COMPILETAG=compile_golangimage
make build GOBUILDTAGS="include_oss include_gcs" BUILDBIN=true NOTARYFLAG=true TRIVYFLAG=true CHARTFLAG=true GEN_TLS=true PULL_BASE_FROM_DOCKERHUB=false

如果大家不想自己构建镜像,也可以通过执行下面命令,下载我构建好的镜像。

docker pull engchina/harbor-exporter:v2.7.1; docker tag engchina/harbor-exporter:v2.7.1 goharbor/harbor-exporter:dev-arm
docker pull engchina/harbor-exporter-base:v2.7.1; docker tag engchina/harbor-exporter-base:v2.7.1 goharbor/harbor-exporter-base:dev-arm
docker pull engchina/chartmuseum-photon:v2.7.1; docker tag engchina/chartmuseum-photon:v2.7.1 goharbor/chartmuseum-photon:dev-arm
docker pull engchina/harbor-chartserver-b:v2.7.1; docker tag engchina/harbor-chartserver-b:v2.7.1 goharbor/harbor-chartserver-base:dev-arm
docker pull engchina/redis-photon:v2.7.1; docker tag engchina/redis-photon:v2.7.1 goharbor/redis-photon:dev-arm
docker pull engchina/harbor-redis-base:v2.7.1; docker tag engchina/harbor-redis-base:v2.7.1 goharbor/harbor-redis-base:dev-arm
docker pull engchina/trivy-adapter-photon:v2.7.1; docker tag engchina/trivy-adapter-photon:v2.7.1 goharbor/trivy-adapter-photon:dev-arm
docker pull engchina/harbor-trivy-adapter:v2.7.1; docker tag engchina/harbor-trivy-adapter:v2.7.1 goharbor/harbor-trivy-adapter-base:dev-arm
docker pull engchina/harbor-notary-signer:v2.7.1; docker tag engchina/harbor-notary-signer:v2.7.1 goharbor/harbor-notary-signer-base:dev-arm
docker pull engchina/harbor-notary-server:v2.7.1; docker tag engchina/harbor-notary-server:v2.7.1 goharbor/harbor-notary-server-base:dev-arm
docker pull engchina/harbor-registryctl:v2.7.1; docker tag engchina/harbor-registryctl:v2.7.1 goharbor/harbor-registryctl:dev-arm
docker pull engchina/harbor-registryctl-b:v2.7.1; docker tag engchina/harbor-registryctl-b:v2.7.1 goharbor/harbor-registryctl-base:dev-arm
docker pull engchina/registry-photon:v2.7.1; docker tag engchina/registry-photon:v2.7.1 goharbor/registry-photon:dev-arm
docker pull engchina/harbor-registry-base:v2.7.1; docker tag engchina/harbor-registry-base:v2.7.1 goharbor/harbor-registry-base:dev-arm
docker pull engchina/harbor-nginx-base:v2.7.1; docker tag engchina/harbor-nginx-base:v2.7.1 goharbor/harbor-nginx-base:dev-arm
docker pull engchina/nginx-photon:v2.7.1; docker tag engchina/nginx-photon:v2.7.1 goharbor/nginx-photon:dev-arm
docker pull engchina/harbor-log:v2.7.1; docker tag engchina/harbor-log:v2.7.1 goharbor/harbor-log:dev-arm
docker pull engchina/harbor-log-base:v2.7.1; docker tag engchina/harbor-log-base:v2.7.1 goharbor/harbor-log-base:dev-arm
docker pull engchina/harbor-jobservice:v2.7.1; docker tag engchina/harbor-jobservice:v2.7.1 goharbor/harbor-jobservice:dev-arm
docker pull engchina/harbor-jobservice-ba:v2.7.1; docker tag engchina/harbor-jobservice-ba:v2.7.1 goharbor/harbor-jobservice-base:dev-arm
docker pull engchina/harbor-core:v2.7.1; docker tag engchina/harbor-core:v2.7.1 goharbor/harbor-core:dev-arm
docker pull engchina/harbor-core-base:v2.7.1; docker tag engchina/harbor-core-base:v2.7.1 goharbor/harbor-core-base:dev-arm
docker pull engchina/harbor-portal:v2.7.1; docker tag engchina/harbor-portal:v2.7.1 goharbor/harbor-portal:dev-arm
docker pull engchina/harbor-portal-base:v2.7.1; docker tag engchina/harbor-portal-base:v2.7.1 goharbor/harbor-portal-base:dev-arm
docker pull engchina/harbor-db:v2.7.1; docker tag engchina/harbor-db:v2.7.1 goharbor/harbor-db:dev-arm
docker pull engchina/harbor-db-base:v2.7.1; docker tag engchina/harbor-db-base:v2.7.1 goharbor/harbor-db-base:dev-arm
docker pull engchina/prepare:v2.7.1; docker tag engchina/prepare:v2.7.1 goharbor/prepare:dev-arm
docker pull engchina/harbor-prepare-base:v2.7.1; docker tag engchina/harbor-prepare-base:v2.7.1 goharbor/harbor-prepare-base:dev-arm

第4步,安装Harbor

安装Harbor,2023年4月16日时点最新版本是v2.7.1版,最新版本请查看
https://github.com/goharbor/harbor/releases,

mkdir -p /u01/apps; cd /u01/apps
wget https://github.com/goharbor/harbor/releases/download/v2.7.1/harbor-offline-installer-v2.7.1.tgz
tar zxvf harbor-offline-installer-v2.7.1.tgz; cd harbor

修改install.sh,我们使用自己构建的镜像,不需要load Harbor离线安装包里面的镜像,

vi install.sh

--- 修改前
docker load -i ./harbor*.tar.gz
---

--- 修改后
# docker load -i ./harbor*.tar.gz
---

修改prepare,我们使用自己构建的镜像,自己构建的镜像默认的tag是dev-arm

vi prepare

--- 修改前
# goharbor/prepare:v2.7.1 prepare $@
---

--- 修改后
goharbor/prepare:dev-arm prepare $@
---

创建harbor.yml,并修改其中一些配置项,其中的域名和证明书等信息,请务必根据实际情况修改,

cp harbor.yml.tmpl harbor.yml
vi harbor.yml
---
hostname: harbor.oracle.myserver.local
https:
  certificate: /root/certs/tls.crt
  private_key: /root/certs/tls.key
external_url: https://harbor.oracle.myserver.local
harbor_admin_password: <your_password>
database:
  password: <your_password>
data_volume: /u01/data  
uaa:
  ca_file: /root/certs/ca.crt
---

执行install.sh进行安装,

mkdir -p /u01/data
./install.sh

完成后,我们可以通过docker ps命令查看启动的容器,

docker ps

--- output
CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS                             PORTS
                                                                  NAMES
88c275978aac   goharbor/harbor-jobservice:dev-arm    "/harbor/entrypoint.…"   25 seconds ago   Up 20 seconds (health: starting)
                                                                  harbor-jobservice
41f46dc66072   goharbor/nginx-photon:dev-arm         "nginx -g 'daemon of…"   25 seconds ago   Up 23 seconds (health: starting)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp   nginx
c1879fd87e80   goharbor/harbor-core:dev-arm          "/harbor/entrypoint.…"   25 seconds ago   Up 23 seconds (health: starting)
                                                                  harbor-core
657ef06d4706   goharbor/harbor-portal:dev-arm        "nginx -g 'daemon of…"   25 seconds ago   Up 24 seconds (health: starting)
                                                                  harbor-portal
96880fa14ccd   goharbor/harbor-db:dev-arm            "/docker-entrypoint.…"   25 seconds ago   Up 24 seconds (health: starting)
                                                                  harbor-db
29d1718fa4c2   goharbor/registry-photon:dev-arm      "/home/harbor/entryp…"   25 seconds ago   Up 24 seconds (health: starting)
                                                                  registry
395c652377d2   goharbor/redis-photon:dev-arm         "redis-server /etc/r…"   25 seconds ago   Up 24 seconds (health: starting)
                                                                  redis
4fce8e51633c   goharbor/harbor-registryctl:dev-arm   "/home/harbor/start.…"   25 seconds ago   Up 24 seconds (health: starting)
                                                                  registryctl
6560a21ab66c   goharbor/harbor-log:dev-arm           "/bin/sh -c /usr/loc…"   25 seconds ago   Up 25 seconds (health: starting)   127.0.0.1:1514->10514/tcp
---

第5步,访问Harbor

配置hosts文件的域名解析,

<your_harbor_ip> harbor.oracle.myserver.local

浏览器导入自制证书的ca.crt,以火狐(Firefox)为例,设置=>证书=>查看证书,点击导入,选择ca.crt,勾选2个信任选择。

使用浏览器访问,https://harbor.oracle.myserver.local,用户名是admin,密码是harbor.yml里面配置的<your_password>

在这里插入图片描述
在这里插入图片描述

第6步,上传镜像进行检证,

由于我们使用的是自签名证书,需要配置让docker信任这个自签名证书,

sudo mkdir -p /etc/docker/certs.d/harbor.oracle.myserver.local
sudo cp /root/certs/ca.crt /etc/docker/certs.d/harbor.oracle.myserver.local/

sudo systemctl daemon-reload
sudo systemctl restart docker

我们试试登录和上传镜像,

docker login harbor.oracle.myserver.local
>admin
><your_password>

docker pull nginx:latest
docker tag nginx:latest harbor.oracle.myserver.local/library/nginx:latest
docker push harbor.oracle.myserver.local/library/nginx:latest

成功后,可以通过浏览器看见nginx的镜像已经存在library的库中了,

在这里插入图片描述

其他,上传 v2.7.1 版本镜像的命令

此处为了方便其他构建失败的技术者,我将构建成功的镜像上传到 docker hub 上利于大家直接使用。下面是上传镜像的命令,大家不需要执行。

docker tag goharbor/harbor-exporter:dev-arm engchina/harbor-exporter:v2.7.1; docker push engchina/harbor-exporter:v2.7.1
docker tag goharbor/harbor-exporter-base:dev-arm engchina/harbor-exporter-base:v2.7.1; docker push engchina/harbor-exporter-base:v2.7.1
docker tag goharbor/chartmuseum-photon:dev-arm engchina/chartmuseum-photon:v2.7.1; docker push engchina/chartmuseum-photon:v2.7.1
docker tag goharbor/harbor-chartserver-base:dev-arm engchina/harbor-chartserver-b:v2.7.1; docker push engchina/harbor-chartserver-b:v2.7.1
docker tag goharbor/redis-photon:dev-arm engchina/redis-photon:v2.7.1; docker push engchina/redis-photon:v2.7.1
docker tag goharbor/harbor-redis-base:dev-arm engchina/harbor-redis-base:v2.7.1; docker push engchina/harbor-redis-base:v2.7.1
docker tag goharbor/trivy-adapter-photon:dev-arm engchina/trivy-adapter-photon:v2.7.1; docker push engchina/trivy-adapter-photon:v2.7.1
docker tag goharbor/harbor-trivy-adapter-base:dev-arm engchina/harbor-trivy-adapter:v2.7.1; docker push engchina/harbor-trivy-adapter:v2.7.1
docker tag goharbor/harbor-notary-signer-base:dev-arm engchina/harbor-notary-signer:v2.7.1; docker push engchina/harbor-notary-signer:v2.7.1
docker tag goharbor/harbor-notary-server-base:dev-arm engchina/harbor-notary-server:v2.7.1; docker push engchina/harbor-notary-server:v2.7.1
docker tag goharbor/harbor-registryctl:dev-arm engchina/harbor-registryctl:v2.7.1; docker push engchina/harbor-registryctl:v2.7.1
docker tag goharbor/harbor-registryctl-base:dev-arm engchina/harbor-registryctl-b:v2.7.1; docker push engchina/harbor-registryctl-b:v2.7.1
docker tag goharbor/registry-photon:dev-arm engchina/registry-photon:v2.7.1; docker push engchina/registry-photon:v2.7.1
docker tag goharbor/harbor-registry-base:dev-arm engchina/harbor-registry-base:v2.7.1; docker push engchina/harbor-registry-base:v2.7.1
docker tag goharbor/harbor-nginx-base:dev-arm engchina/harbor-nginx-base:v2.7.1; docker push engchina/harbor-nginx-base:v2.7.1
docker tag goharbor/nginx-photon:dev-arm engchina/nginx-photon:v2.7.1; docker push engchina/nginx-photon:v2.7.1
docker tag goharbor/harbor-log:dev-arm engchina/harbor-log:v2.7.1; docker push engchina/harbor-log:v2.7.1
docker tag goharbor/harbor-log-base:dev-arm engchina/harbor-log-base:v2.7.1; docker push engchina/harbor-log-base:v2.7.1
docker tag goharbor/harbor-jobservice:dev-arm engchina/harbor-jobservice:v2.7.1; docker push engchina/harbor-jobservice:v2.7.1
docker tag goharbor/harbor-jobservice-base:dev-arm engchina/harbor-jobservice-ba:v2.7.1; docker push engchina/harbor-jobservice-ba:v2.7.1
docker tag goharbor/harbor-core:dev-arm engchina/harbor-core:v2.7.1; docker push engchina/harbor-core:v2.7.1
docker tag goharbor/harbor-core-base:dev-arm engchina/harbor-core-base:v2.7.1; docker push engchina/harbor-core-base:v2.7.1
docker tag goharbor/harbor-portal:dev-arm engchina/harbor-portal:v2.7.1; docker push engchina/harbor-portal:v2.7.1
docker tag goharbor/harbor-portal-base:dev-arm engchina/harbor-portal-base:v2.7.1; docker push engchina/harbor-portal-base:v2.7.1
docker tag goharbor/harbor-db:dev-arm engchina/harbor-db:v2.7.1; docker push engchina/harbor-db:v2.7.1
docker tag goharbor/harbor-db-base:dev-arm engchina/harbor-db-base:v2.7.1; docker push engchina/harbor-db-base:v2.7.1
docker tag goharbor/prepare:dev-arm engchina/prepare:v2.7.1; docker push engchina/prepare:v2.7.1
docker tag goharbor/harbor-prepare-base:dev-arm engchina/harbor-prepare-base:v2.7.1; docker push engchina/harbor-prepare-base:v2.7.1

其他,使用 v2.6.4 版本时的命令

sudo yum install -y git
git clone https://github.com/goharbor/harbor-arm.git; cd harbor-arm
git clone --branch release-2.6.0 https://github.com/goharbor/harbor.git src/github.com/goharbor/harbor

make compile_redis
make prepare_arm_data
make pre_update
make compile COMPILETAG=compile_golangimage
make build GOBUILDTAGS="include_oss include_gcs" BUILDBIN=true NOTARYFLAG=true TRIVYFLAG=true CHARTFLAG=true GEN_TLS=true PULL_BASE_FROM_DOCKERHUB=false
mkdir -p /u01/apps; cd /u01/apps
wget https://github.com/goharbor/harbor/releases/download/v2.6.4/harbor-offline-installer-v2.6.4.tgz
tar zxvf harbor-offline-installer-v2.6.4.tgz; cd harbor

修改install.sh,我们使用自己构建的镜像,不需要load Harbor离线安装包里面的镜像,

vi install.sh

--- 修改前
docker load -i ./harbor*.tar.gz
---

--- 修改后
# docker load -i ./harbor*.tar.gz
---

修改prepare,我们使用自己构建的镜像,自己构建的镜像默认的tag是dev-arm

vi prepare

--- 修改前
# goharbor/prepare:v2.6.4 prepare $@
---

--- 修改后
goharbor/prepare:dev-arm prepare $@
---

上传 v2.6.4 版本镜像命令,

docker tag goharbor/harbor-exporter:dev-arm engchina/harbor-exporter:v2.6.4; docker push engchina/harbor-exporter:v2.6.4
docker tag goharbor/harbor-exporter-base:dev-arm engchina/harbor-exporter-base:v2.6.4; docker push engchina/harbor-exporter-base:v2.6.4
docker tag goharbor/chartmuseum-photon:dev-arm engchina/chartmuseum-photon:v2.6.4; docker push engchina/chartmuseum-photon:v2.6.4
docker tag goharbor/harbor-chartserver-base:dev-arm engchina/harbor-chartserver-b:v2.6.4; docker push engchina/harbor-chartserver-b:v2.6.4
docker tag goharbor/redis-photon:dev-arm engchina/redis-photon:v2.6.4; docker push engchina/redis-photon:v2.6.4
docker tag goharbor/harbor-redis-base:dev-arm engchina/harbor-redis-base:v2.6.4; docker push engchina/harbor-redis-base:v2.6.4
docker tag goharbor/trivy-adapter-photon:dev-arm engchina/trivy-adapter-photon:v2.6.4; docker push engchina/trivy-adapter-photon:v2.6.4
docker tag goharbor/harbor-trivy-adapter-base:dev-arm engchina/harbor-trivy-adapter:v2.6.4; docker push engchina/harbor-trivy-adapter:v2.6.4
docker tag goharbor/notary-server-photon:dev-arm engchina/notary-server-photon:v2.6.4; docker push engchina/notary-server-photon:v2.6.4
docker tag goharbor/notary-signer-photon:dev-arm engchina/notary-signer-photon:v2.6.4; docker push engchina/notary-signer-photon:v2.6.4
docker tag goharbor/harbor-notary-signer-base:dev-arm engchina/harbor-notary-signer:v2.6.4; docker push engchina/harbor-notary-signer:v2.6.4
docker tag goharbor/harbor-notary-server-base:dev-arm engchina/harbor-notary-server:v2.6.4; docker push engchina/harbor-notary-server:v2.6.4
docker tag goharbor/harbor-registryctl:dev-arm engchina/harbor-registryctl:v2.6.4; docker push engchina/harbor-registryctl:v2.6.4
docker tag goharbor/harbor-registryctl-base:dev-arm engchina/harbor-registryctl-b:v2.6.4; docker push engchina/harbor-registryctl-b:v2.6.4
docker tag goharbor/registry-photon:dev-arm engchina/registry-photon:v2.6.4; docker push engchina/registry-photon:v2.6.4
docker tag goharbor/harbor-registry-base:dev-arm engchina/harbor-registry-base:v2.6.4; docker push engchina/harbor-registry-base:v2.6.4
docker tag goharbor/nginx-photon:dev-arm engchina/nginx-photon:v2.6.4; docker push engchina/nginx-photon:v2.6.4
docker tag goharbor/harbor-nginx-base:dev-arm engchina/harbor-nginx-base:v2.6.4; docker push engchina/harbor-nginx-base:v2.6.4
docker tag goharbor/harbor-log:dev-arm engchina/harbor-log:v2.6.4; docker push engchina/harbor-log:v2.6.4
docker tag goharbor/harbor-log-base:dev-arm engchina/harbor-log-base:v2.6.4; docker push engchina/harbor-log-base:v2.6.4
docker tag goharbor/harbor-jobservice:dev-arm engchina/harbor-jobservice:v2.6.4; docker push engchina/harbor-jobservice:v2.6.4
docker tag goharbor/harbor-jobservice-base:dev-arm engchina/harbor-jobservice-ba:v2.6.4; docker push engchina/harbor-jobservice-ba:v2.6.4
docker tag goharbor/harbor-core:dev-arm engchina/harbor-core:v2.6.4; docker push engchina/harbor-core:v2.6.4
docker tag goharbor/harbor-core-base:dev-arm engchina/harbor-core-base:v2.6.4; docker push engchina/harbor-core-base:v2.6.4
docker tag goharbor/harbor-portal:dev-arm engchina/harbor-portal:v2.6.4; docker push engchina/harbor-portal:v2.6.4
docker tag goharbor/harbor-portal-base:dev-arm engchina/harbor-portal-base:v2.6.4; docker push engchina/harbor-portal-base:v2.6.4
docker tag goharbor/harbor-db:dev-arm engchina/harbor-db:v2.6.4; docker push engchina/harbor-db:v2.6.4
docker tag goharbor/harbor-db-base:dev-arm engchina/harbor-db-base:v2.6.4; docker push engchina/harbor-db-base:v2.6.4
docker tag goharbor/prepare:dev-arm engchina/prepare:v2.6.4; docker push engchina/prepare:v2.6.4
docker tag goharbor/harbor-prepare-base:dev-arm engchina/harbor-prepare-base:v2.6.4; docker push engchina/harbor-prepare-base:v2.6.4

下载 v2.6.4 版本镜像命令,

docker pull engchina/harbor-exporter:v2.6.4; docker tag engchina/harbor-exporter:v2.6.4 goharbor/harbor-exporter:dev-arm
docker pull engchina/harbor-exporter-base:v2.6.4; docker tag engchina/harbor-exporter-base:v2.6.4 goharbor/harbor-exporter-base:dev-arm
docker pull engchina/chartmuseum-photon:v2.6.4; docker tag engchina/chartmuseum-photon:v2.6.4 goharbor/chartmuseum-photon:dev-arm
docker pull engchina/harbor-chartserver-b:v2.6.4; docker tag engchina/harbor-chartserver-b:v2.6.4 goharbor/harbor-chartserver-base:dev-arm
docker pull engchina/redis-photon:v2.6.4; docker tag engchina/redis-photon:v2.6.4 goharbor/redis-photon:dev-arm
docker pull engchina/harbor-redis-base:v2.6.4; docker tag engchina/harbor-redis-base:v2.6.4 goharbor/harbor-redis-base:dev-arm
docker pull engchina/trivy-adapter-photon:v2.6.4; docker tag engchina/trivy-adapter-photon:v2.6.4 goharbor/trivy-adapter-photon:dev-arm
docker pull engchina/harbor-trivy-adapter:v2.6.4; docker tag engchina/harbor-trivy-adapter:v2.6.4 goharbor/harbor-trivy-adapter-base:dev-arm
docker pull engchina/notary-server-photon:v2.6.4; docker tag engchina/notary-server-photon:v2.6.4 goharbor/notary-server-photon:dev-arm
docker pull engchina/notary-signer-photon:v2.6.4; docker tag engchina/notary-signer-photon:v2.6.4 goharbor/notary-signer-photon:dev-arm
docker pull engchina/harbor-notary-signer:v2.6.4; docker tag engchina/harbor-notary-signer:v2.6.4 goharbor/harbor-notary-signer-base:dev-arm
docker pull engchina/harbor-notary-server:v2.6.4; docker tag engchina/harbor-notary-server:v2.6.4 goharbor/harbor-notary-server-base:dev-arm
docker pull engchina/harbor-registryctl:v2.6.4; docker tag engchina/harbor-registryctl:v2.6.4 goharbor/harbor-registryctl:dev-arm
docker pull engchina/harbor-registryctl-b:v2.6.4; docker tag engchina/harbor-registryctl-b:v2.6.4 goharbor/harbor-registryctl-base:dev-arm
docker pull engchina/registry-photon:v2.6.4; docker tag engchina/registry-photon:v2.6.4 goharbor/registry-photon:dev-arm
docker pull engchina/harbor-registry-base:v2.6.4; docker tag engchina/harbor-registry-base:v2.6.4 goharbor/harbor-registry-base:dev-arm
docker pull engchina/nginx-photon:v2.6.4; docker tag engchina/nginx-photon:v2.6.4 goharbor/nginx-photon:dev-arm
docker pull engchina/harbor-nginx-base:v2.6.4; docker tag engchina/harbor-nginx-base:v2.6.4 goharbor/harbor-nginx-base:dev-arm
docker pull engchina/harbor-log:v2.6.4; docker tag engchina/harbor-log:v2.6.4 goharbor/harbor-log:dev-arm
docker pull engchina/harbor-log-base:v2.6.4; docker tag engchina/harbor-log-base:v2.6.4 goharbor/harbor-log-base:dev-arm
docker pull engchina/harbor-jobservice:v2.6.4; docker tag engchina/harbor-jobservice:v2.6.4 goharbor/harbor-jobservice:dev-arm
docker pull engchina/harbor-jobservice-ba:v2.6.4; docker tag engchina/harbor-jobservice-ba:v2.6.4 goharbor/harbor-jobservice-base:dev-arm
docker pull engchina/harbor-core:v2.6.4; docker tag engchina/harbor-core:v2.6.4 goharbor/harbor-core:dev-arm
docker pull engchina/harbor-core-base:v2.6.4; docker tag engchina/harbor-core-base:v2.6.4 goharbor/harbor-core-base:dev-arm
docker pull engchina/harbor-portal:v2.6.4; docker tag engchina/harbor-portal:v2.6.4 goharbor/harbor-portal:dev-arm
docker pull engchina/harbor-portal-base:v2.6.4; docker tag engchina/harbor-portal-base:v2.6.4 goharbor/harbor-portal-base:dev-arm
docker pull engchina/harbor-db:v2.6.4; docker tag engchina/harbor-db:v2.6.4 goharbor/harbor-db:dev-arm
docker pull engchina/harbor-db-base:v2.6.4; docker tag engchina/harbor-db-base:v2.6.4 goharbor/harbor-db-base:dev-arm
docker pull engchina/prepare:v2.6.4; docker tag engchina/prepare:v2.6.4 goharbor/prepare:dev-arm
docker pull engchina/harbor-prepare-base:v2.6.4; docker tag engchina/harbor-prepare-base:v2.6.4 goharbor/harbor-prepare-base:dev-arm

完结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TensorFlow 深度学习第二版:1~5

原文&#xff1a;Deep Learning with TensorFlow Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只…

2023年【第十四届蓝桥杯】省赛java b组填空题

第一题 令 S 1! 2! 3! ... 202320232023!&#xff0c;求 S 的末尾 9 位数字。 提示&#xff1a;答案首位不为 0。 考试时的想法以及题解&#xff1a; 如果我们直接按照题目描述直接来求每个阶乘和的话恐怕没有什么数据类型能够胜任&#xff0c;在考试时我一开始使用了…

Linux中的read/write和recv/send的区别,并使用recv/send实现简单的聊天功能

Linux中的read/write和recv/send的区别read/writeread/writeread/write的用法recv/sendrecv/sendrecv/send的用法LinuxLinuxLinux中的read/writeread/writeread/write和recv/sendrecv/sendrecv/send的区别下面是一个使用read/write进行文件读写操作的例子&#xff1a;下面是一个…

【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务

一、说明二、部署 MySQL三、部署 Nacos四、部署 Dubbo 服务4.1. 创建镜像仓库的密钥4.2. 部署 provider 服务4.3. 部署 consumer 服务五、测试一、说明 本文介绍基于 Kubernetes(k8s) 环境集成阿里云 私有镜像仓库 来部署一套 Dubbo Nacos 的微服务系统&#xff0c;并使用 Ku…

VUE前端项目环境搭建

背景&#xff1a; 想要使用vue搭建一个前端项目&#xff0c;写个小网站练练手&#xff0c;因为没有前端经验&#xff0c;所以从网上找了一个vue得开源模板使用&#xff0c;经过一番挑选选中了字节公司花裤衩大佬开源得项目&#xff0c;地址如下&#xff1a; 开源项目地址&…

第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)

使用教程一、配置1、环境配置2、框架配置3、启动入口二、用例编写1、用例模板2、参数依赖写法2、函数&#xff08;方法插件&#xff09;写法3、接口上传文件和表单参数4、接口上传json参数5、接口无数据填写6、code断言7、body断言7、json断言8、sql断言9、完整断言写法&#x…

三种不同实现ublk的零拷贝I/O的方法

用户态块设备ublk&#xff0c;就是提供/dev/ublkbX这样的标准块设备给业务&#xff0c;业务读写这个块的实际IO处理由编写的用户态的代码决定。这就好比使用FUSE&#xff0c;所有对挂载于FUSE的目录的读写都是编写的IO handler来处理一样。使用用户态块设备&#xff0c;可以方便…

产品经理必读|用户研究方法总结①

众所周知&#xff0c;理解用户需求&#xff0c;识别用户痛点&#xff0c;是产品或功能成型之前绕不开的过程。而要获取到用户真实的需求和痛点&#xff0c;唯一的方法就是做用户调研。而用研的方法都有哪些呢&#xff1f;今天我就来给大家分享一下行业中常见的用研方法。 用研的…

ESP32设备驱动-VL53L0X飞行时间(激光测距)传感器驱动

VL53L0X飞行时间(激光测距)传感器驱动 文章目录 VL53L0X飞行时间(激光测距)传感器驱动1、VL53L0X介绍2、硬件准备3、软件准备4、驱动实现1、VL53L0X介绍 VL53L0X 是新一代飞行时间 (ToF) 激光测距模块,采用当今市场上最小的封装,与传统技术不同,无论目标反射率如何,都能提…

项目中开发固定表头和首列的表格【付代码】

前言 前段时间做移动端的项目&#xff0c;项目中需要一个固定表头和首列的表格&#xff0c;但由于是移动端的&#xff0c;组件库里没有类似的&#xff0c;于是&#xff0c;就去网上找看有没有类似的&#xff0c;结果越找越气&#xff0c;10个文章9个抄&#xff0c;抄也行&#…

安全狗入选网络安全行业全景图(第十版)多个细分领域

4月7日&#xff0c;安全牛正式发布第十版网络安全行业全景图。 作为国内云原生安全领导厂商&#xff0c;安全狗也凭借综合的安全能力脱颖而出入选全景图多个领域。 据悉&#xff0c;全景图报告调研基于企业自主申报&#xff0c;并对申报企业收录有严格要求&#xff0c;安全牛…

Zookeeper集群+Kafka集群

目录 一、Zookeeper Zookeeper 概述 定义 工作机制 Zookeeper特点 Zookeeper数据结构 ZooKeeper应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 第一次启动选举机制 非第一次启动选举机制 二、部署Zookeeper集群 1、实验准备 2…

第60章 用户增、修、删的前端实现

1 \src\components\Users\AddUser.vue <template> <!-- elmentUI 子页面的渲染显示注意事项说明&#xff1a; 子页面的渲染显示必须的使用“<el-dialog></el-dialog>标签及其所包含的子标签&#xff0c;否则子页面将不会被渲染显示出来。” --> <…

Python学习笔记--判断语句

&#xff08;一&#xff09; 布尔类型和比较运算符 1. 布尔类型&#xff1a;判断结果 True&#xff1a;表示真&#xff08;是、肯定&#xff09; False&#xff1a;表示假&#xff08;否、否定&#xff09; """ 演示布尔类型的定义 以及比较运算符的应用 "…

BCM系统组成及控制原理

1 输入控制 由于负载能力、抗干扰能力等客观情况。许多信号量无法直接施加至MCU之上&#xff0c;须有适当的输入电路(Input circuit)将信号进行隔离、调理&#xff0c;方可安全可靠地传递给MCU。 下面以开关信号和脉冲信号2种来分述。 1)开关信号的输入。 即将系统与电源正…

高频算法:Leetcode53 最大子数组和

今天讲的是Leetcode第53题&#xff0c;最大子数组和 首先观察题目&#xff0c;题目需要我们找出具有最大和的连续子数组&#xff0c;直接拿题目中的示例来做一个演示&#xff0c;找一找什么规律下的连续子数组才能得到最大的和 先从-2开始&#xff0c;-2 1 -1 此时我们的和…

【Python】Python读写.xlsx文件(基本操作、空值补全等)

【Python】Python读写.xlsx文件&#xff08;Pandas&#xff09; 文章目录【Python】Python读写.xlsx文件&#xff08;Pandas&#xff09;1. 介绍2. Pandas读写xlsx文件2.1 基本操作2.1.1 实现任务2.1.2 代码2.1.3 结果2.2 进阶操作2.2.1 写操作2.2.2 查看数据表的基本信息2.2.2…

集中一个主题,密集学习几个月,突飞猛进

集中一个主题&#xff0c;密集学习几个月大长进 诺贝尔奖获得者西蒙发现 密集学习了几个月品牌营销的知识 长进明显 原来是有科学规律的 趣讲大白话&#xff1a;大力出奇迹 【趣讲信息科技132期】 **************************** 西蒙学习法&#xff1a;“对于一个有一定基础的人…

KANO模型-产品需求调研利器

最近要做一个项目&#xff0c;需要调研客户的真实需求&#xff0c;我们有一些可提供的功能&#xff0c;需要通过问卷调研出客户对功能的优先级需求。但问卷调研的结果能反映客户的真实需求和痛点吗&#xff1f;如何给这些需求排优先级&#xff0c;以及所占的权重&#xff1f;如…

【python】只需一段代码,剪辑一个视频——Moviepy详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、准备二、视频剪辑三、视频拼接四、逐帧变化四、导出GIF总结前言 知道吗&#xff0c;用moviepy一行代码就能够快速剪辑视频中某个区间的片段&#xff1a; cl…