ハーバー高可用性クラスターの設計と展開 (オフライン インストールに基づく)

原文の転載元: Harbor 高可用性クラスターの設計と展開 (オフライン インストール方法に基づく)

建築から美へ 北京で公開2022-09-05 09:28 

編集者のおすすめ:

純粋に便利で実用的であるため、推奨度は 5 つ星です。

次の記事は、Jianke Li Dabai が執筆した Harbor Advanced Practice からのものです。

ハーバーの上級練習。

この公開アカウントは主に、実際のビジネス シナリオにおけるクラウド ネイティブ分野の Harbor プライベート イメージ ウェアハウスに関する知識を共有します。エンタープライズレベルの高可用性設計、バックアップと復元、アップグレード、モニタリング、イメージ移行、トラブルシューティング、パフォーマンスの最適化、CICD 統合などをハーバーします。

写真

【概要】 Harbor オフライン設置方式に基づく高可用性ソリューションの設計と導入。

1. 環境説明

1.1 アーキテクチャ図

写真

ハーバーの高可用性アーキテクチャ図

[アーキテクチャ分析]: Harbor の Redis キャッシュ コンポーネントと PostgreSQL データベース コンポーネントをシステムの外部に移行して高可用性を実現し、外部共有ストレージを使用して複数の Harbor インスタンス間でのデータ共有を実現します。Harbor インスタンスは水平方向に拡張できます。

1.2 ホストリスト

IPアドレス CPU名 説明する
192.168.2.107 港1 ハーバー インスタンス 1、ポート 8021
192.168.2.108 港2 ハーバー インスタンス 2、ポート 8021
192.168.2.110 港湾データ Harbor インスタンスの共有ストレージ、外部データベース、外部キャッシュ サービスをデプロイする
192.168.2.111 / 負荷分散 VIP、ポート 8121

写真

1.3 サービスバージョン

仕える バージョン要件 インストールされているバージョン
/ 2.3.5
ドッカー 17.06.0+ 19.03.8
Docker-compose 1.18.0以降 v2.2.3
レディス 6.0.16 6.2.7
PostgreSQL v13.2 13.5

2. ホストの初期化

ハーバーインスタンスが初期化されました

  • ドッカーをインストールする

  • docker-compose をインストールする

  • カーネルパラメータを構成する

2.1 ドッカーをインストールする

$ wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum install -y docker-ce
$ systemctl enable  --now docker
$ systemctl status docker
$ cat <<EOF > /etc/docker/daemon.json
{
   "registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
   "exec-opts": ["native.cgroupdriver=systemd"],  
   "registry-mirrors": ["https://3hjcmqfe.mirror.aliyuncs.com"], 
   "log-driver": "json-file",
   "log-opts": {
           "max-size": "500m",
           "max-file": "2" 
        }
}
EOF 
$ systemctl daemon-reload
$ systemctl restart docker

exec-opts": ["native.cgroupdriver=systemd"]、#Drive registry-mirrors: ミラー アクセラレーション アドレス、複数の max-file: ライブを保持するログの最大数-restore: コンテナーを再起動せずに docker を再起動します。主に次の場所で使用されます。 k8s

2.2 docker-compose のインストール

docker-compose バージョン 1.18.0 以降をインストールします。ここではバージョン v2.2.3 をインストールします。

$ wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
$ mv  docker-compose-linux-x86_64 /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose version
Docker Compose version v2.2.3

2.3 カーネルパラメータの設定

$ modprobe br_netfilter
$ cat >> /etc/sysctl.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1      #路由转发
EOF
$ sysctl -p

3. NFS を使用して外部共有ストレージを提供する

192.168.2.110NFS サービスをデプロイするときは、Harbor1 インスタンスと Harbor2 インスタンスが使用する共有ストレージを提供します。192.168.2.110NFS サーバーとして、ハーバー インスタンスはクライアントです。

3.1 NFS サーバーの導入

1) NFS をインストールして起動します。

$ yum  install -y  nfs-utils 
$ systemctl start nfs && systemctl enable nfs  && systemctl status nfs
$ chkconfig nfs on              #设置为开机自启

2) 共有ディレクトリを作成する

クライアントのデータは、リモートの共有ディレクトリに保存されます。

$ mkdir -p /data/harbor_data

3) 構成を変更する

$ cat /etc/exports 
/data/harbor_data  192.168.2.0/24(rw,no_root_squash)  #允许哪个网段的客户端使用指定共享目录
$ exportfs -arv            #使配置文件生效
exporting 192.168.2.0/24:/data/harbor_data

写真

4) nfsサービスを再起動します

$ systemctl restart nfs 

5) 共有ディレクトリ情報を確認する

$ showmount  -e localhost                    
export list for localhost:
/data/harbor_data

3.2 クライアントのデプロイ

ハーバー1とハーバー2で運用

$ yum -y install nfs-utils
$ systemctl start nfs-utils &&  systemctl enable nfs-utils && systemctl status  nfs-utils

3.3 クライアントが NFS 共有ストレージをマウントする

Harbor1 ノードと Harbor2 ノード上で操作し、インスタンスのストレージ ディレクトリを作成して、NFS にマウントします。

$ mkdir -p /data/harbor_data 
$ cat <<EOF >> /etc/fstab
192.168.2.110:/data/harbor_data /data/harbor_data nfs  defaults  0 0
EOF 
$ mount -a

マウント形式: NFSIP: 共有ディレクトリ ローカル ディレクトリ nfs デフォルト 0 0

  • 正常に使用できるかどうかをテストします。

[root@harbor2 ~]# touch  /data/harbor_data/test.txt 
[root@harbor1 ~]# ls /data/harbor_data/
test.txt

4. Redis キャッシュ サービスのデプロイ (ソース コード)

写真

これはデモンストレーション環境です。実際には、生产环境Redis サービスの高可用性データのバックアップを作成してください。

192.168.2.110Redis キャッシュ サービスをデプロイする場合は、harbor1とインスタンスにharbor2外部 Redis キャッシュ サービスを提供します。

4.1 インストールパッケージをダウンロードする

$ wget https://download.redis.io/releases/redis-6.2.7.tar.gz

4.2 依存関係パッケージをインストールする

$ yum  install  -y  gcc  gcc-c++

4.3 ソースコードのコンパイル

$ mkdir -p /app/
$ tar zxvf  redis-6.2.7.tar.gz  -C /app
$ cd /app/redis-6.2.7/
$ make   #编译
$ make  install   #安装

4.4 設定ファイルの変更

Redis はデフォルトでローカル使用のみをサポートします。ここでいくつかのパラメーターを変更する必要があります。

  • 外部接続可能。

  • Redis 起動モード。

  • Redis リモート接続パスワード;

$ vim  /app/redis-6.2.7/redis.conf 
#bind 127.0.0.1 -::1  #75行,注释掉bind的行,允许任何主机连接;
daemonize yes       #259行,将no修改为yes,使redis可以使用守护进程方式启动;
requirepass lidabai666   #903行,设置redis连接的auth密码(lidabai666)

4.5 Redis サービスの開始

以前の構成ではデーモン プロセスを使用して起動するため、systemctl を使用して redis サービスを直接起動できます。

$ pwd
/app/redis-6.2.7
$ redis-server redis.conf

4.6 サービスの検証

1) Redis サービスのバージョンを確認する

$ redis-cli -v
redis-cli 6.2.7

2) ビューポート

Redis はデフォルトでポート 6379 をリッスンします

$ ps aux | grep  6379
root  6200  0.1  0.2 162416 10020 ?  Ssl 17:59  0:00 redis-server *:6379
root  6231  0.0  0.0 112720  984 pts/0  R+  18:01  0:00 grep --color=auto 6379

3) クライアントが Redis に接続する

harbor1そしてharbor2Redisクライアントとして

$ which redis-cli      #查看redis-cli工具位置
/usr/local/bin/redis-cli
[root@harbor-data redis-6.2.7]# scp /usr/local/bin/redis-cli  192.168.2.107:/usr/local/bin/
[root@harbor-data redis-6.2.7]# scp /usr/local/bin/redis-cli  192.168.2.108:/usr/local/bin/

クライアントは redis-cli ツールを使用して Redis サーバーに接続します

[root@harbor1 ~]# redis-cli  -h 192.168.2.110 -p 6379 -a lidabai666

-a パラメータは、redis 接続パスワードを指定します。


5. PostgreSQL 外部ストレージ サービスのデプロイ (ソース コード)

192.168.2.110PostgreSQL データベース サービスをソース コードでホストにインストールし、harbor1 インスタンスと Harbor2 インスタンスに共有ストレージを提供します。

5.1 新しい postgres ユーザーを作成する

デフォルトでは、スーパー ユーザー (root) は postgresql を起動できないため、ユーザー postgres を手動で作成する必要があります。

$ useradd postgres
$ id postgres
uid=1000(postgres) gid=1000(postgres) 组=1000(postgres)

5.2 依存パッケージのインストール

$ yum -y install readline-devel  zlib-devel  gcc zlib

5.3 ソースコードパッケージをダウンロードして解凍する

$ wget https://ftp.postgresql.org/pub/source/v13.5/postgresql-13.5.tar.gz --no-check-certificate
$ tar zxvf postgresql-13.5.tar.gz   -C  /app/

5.4 コンパイルとインストール

$ cd /app/postgresql-13.5/
$ ./configure  --prefix=/usr/local/postgresql
$ make && make install

5.5 データディレクトリの作成

$ mkdir -p /data/postgresql/data
$ chown -R postgres:postgres /usr/local/postgresql/
$ chown -R postgres:postgres /data/postgresql/data/

5.6 postgres 環境変数を設定する

[root@harbor-data postgresql-13.5]# su  - postgres
[postgres@harbor-data ~]$ vim + .bash_profile
PGHOME=/usr/local/postgresql   #psql安装目录
export PGHOME
PGDATA=/data/postgresql/data    #数据库目录
export PGDATA
PATH=$PATH:$HOME/bin:$HOME/.local/bin:$PGHOME/bin
export PATH
[postgres@harbor-data ~]$ source ./.bash_profile
[postgres@harbor-data ~]$ which psql
/usr/local/postgresql/bin/psql

バージョンを表示 [postgres@harbor-data ~]$ psql -V psql (PostgreSQL) 13.5

5.7 データベースの初期化

Red Hat ファミリのディストリビューションのポリシーにより、PostgreSQL のインストールでは自動起動や自動データベース初期化が有効になりません。データベースのインストールを完了するには、ディストリビューションに応じて次の手順を実行する必要があります。

[postgres@ceph3 ~]$ initdb
......
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:    #表示初始化成功
    pg_ctl -D /data/postgresql/data -l logfile start

写真

5.8 PostgreSQLの起動

初期化が成功したら、プロンプトに従って起動コマンドを実行してください。

[postgres@harbor-data ~]$ pg_ctl -D /data/postgresql/data -l logfile start
waiting for server to start.... done
server started

写真

5.9 Postgresqlのパスワードを設定(変更)する

psql ローカルログインはデフォルトではパスワード不要なので、パスワードを設定してもパスワードなしでログインできます。設定ファイル pg_hba.conf のローカル設定が trust に設定されているはずですが、セキュリティ上の理由からパスワードに変更します。これは、パスワードを使用してログインできることを意味します(パスワードを忘れた場合も可能です)。この方法を使用します。まず信頼に設定してからパスワードを変更し、次にパスワードに設定します)。

[postgres@harbor-data ~]$ psql
psql (13.5)
Type "help" for help.

postgres=# \password    
Enter new password:     #输入设置的密码 Lidabai666
Enter it again:      #确认密码(再次输入)
postgres=# \q    #退出

写真

5.10 PostgreSQL へのリモート ログインをセットアップする

[postgres@harbor-data ~]$ vim /data/postgresql/data/postgresql.conf
listen_addresses = '*'    #60行,监听所有地址
[postgres@harbor-data ~]$ vim + /data/postgresql/data/pg_hba.conf
local   all             all                                 password
host    all             all             0.0.0.0/0            password
host    all             all             ::1/128             password

写真

5.10 PostgreSQLの再起動

$ pg_ctl -D /data/postgresql/data -l /data/postgresql/data/postgres.log restartwaiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started

写真

5.11 データベースの作成

Harbor 2.3.5 が作成する必要があるデータベース:

  • 公証人サーバー

  • 公証人署名者

  • レジストリ

現在、Harbor は PostgraSQL データベースのみをサポートしています。外部 PostgreSQL 上に registry、notary_signer、notary_servers の 3 つのデータベースを手動で作成する必要があります。Harbor が起動すると、対応するデータベースの下にテーブルが自動的に生成されます。

これは主にデモンストレーション環境であるため、PostgreSQL データベースのユーザーはスーパー管理者ですpostgres。実稼働環境の場合は、新しいユーザーを作成し、harbor、notary_signer、および notary_servers の 3 つのデータベースに対応する権限を付与することをお勧めします。 。

[postgres@harbor-data ~]$ psql
Password for user postgres:     #输入密码

postgres=# create database  registry;
CREATE DATABASE
postgres=# create database notary_signer;
CREATE DATABASE
postgres=# create database notary_servers;
CREATE DATABASE
postgres=# \l

写真

5.12 ユーザーの作成

postgres=# create user server with password 'lidabai666';
CREATE ROLE
postgres=# create user signer with password 'lidabai666';
CREATE ROLE
postgres=# \du

写真


6. 負荷分散設定(Nginx + Keepalived)

keepalive と Nginx を使用して、ハーバーの高可用性を実現します。harbor1ロード バランシング用の VIP を提供するには、キープアライブ サービスをおよびノードにインストールしますharbor2Nginx サービスは、VIP からのリクエストをバックエンド サーバー グループ ポートに転送します。

6.1 nginx と keepalived をインストールする

ハーバー1とハーバー2で運用

$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
$ yum install -y nginx keepalived
$ yum -y install nginx-all-modules.noarch     #安装nginx的stream模块

nginx は 1.9.0 から steam モジュールを追加しました。これは 4 層プロトコルの転送、プロキシ、負荷分散などを実装するために使用されます。nginx のバイナリ インストールの場合は、--with-stream パラメータを ./configure に追加してストリーム モジュールをインストールします。

6.2 nginx設定ファイルの変更

在harbor1和harbor2的Nginx服务配置文件一样。
$ vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;   #自动设置nginx的工作进程数量
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;   #工作进程的连接数
}

# 四层负载均衡,为两台harbor提供负载均衡
stream {
    log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
    access_log  /var/log/nginx/harbor-access.log  main;
    upstream harbor{
       server 192.168.2.107:8021;   # harbor1
       server 192.168.2.108:8021;   # harbor2
    }
    server {
       listen  8121;  #由于nginx与harbor节点复用,这个监听端口不能是8021,否则会冲突
       proxy_pass harbor;
    }
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    server {
        listen       80 default_server;
        server_name  _;
        location / {
        }
    }
}

nginx設定ファイルの構文を検出する

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

6.3 キープアライブ設定の変更

本处以harbor1为keepalived服务的主节点,harbor2为keepalived的备节点。主备节点的keepalived配置文件不一样。

1) マスターノード(harbor1)

[root@harbor1 ~]# cat  /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   router_id master1
}

vrrp_instance lidabai {
    state MASTER
    interface ens33
    mcast_src_ip:192.168.2.107 
    virtual_router_id 107
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.111/24  #虚拟VIP地址
    }
    track_script {
        chk_nginx
    }
}
##### 健康检查
vrrp_script chk_nginx {      
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -20
}

2) スタンバイノード(harbor2)

[root@harbor2 ~]# cat  /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   router_id master2
}

vrrp_instance lidabai {
    state BACKUP
    interface ens33
    mcast_src_ip:192.168.2.108
    virtual_router_id 107
    priority 80    #权重
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.111/24
    }
    track_script {
    chk_nginx
    }
}
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh"
  interval 2
  weight -20
}

6.4 ヘルスチェックスクリプトの作成

在主备节点(harbor1和harbor2)同样操作。
$ vim /etc/keepalived/check_nginx.sh 
#!/bin/bash
#1、判断Nginx是否存活
counter=`ps -C nginx --no-header | wc -l`
if [ $counter -eq 0 ]; then
    #2、如果不存活则尝试启动Nginx
    service nginx start
    sleep 2
    #3、等待2秒后再次获取一次Nginx状态
    counter=`ps -C nginx --no-header | wc -l`
    #4、再次进行判断,如Nginx还不存活则停止Keepalived,让地址进行漂移
    if [ $counter -eq 0 ]; then
        service  keepalived stop
    fi
fi
$ chmod +x /etc/keepalived/check_nginx.sh 

6.5 サービスの開始

まず、master1 ノードと master2 ノードで nginx サービスを開始し、次に keepalived サービスを開始します。

1) nginxサービスを開始する

[root@harbor1 ~]# systemctl enable --now nginx   #启动nginx服务并设置开机自启
[root@harbor2 ~]# systemctl enable --now nginx
[root@harbor1 ~]# systemctl status nginx.service 
[root@harbor2 ~]# systemctl status nginx.service

2) キープアライブサービスを開始します

[root@harbor1 ~]# systemctl enable --now keepalived
[root@harbor2 ~]# systemctl enable --now keepalived
[root@harbor1 ~]# systemctl status keepalived.service
[root@harbor2 ~]# systemctl status keepalived.service

6.6 VIPを見る

在harbor1节点查看VIP是否成功绑定。
[root@harbor1 ~]# ip addr
......
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:f1:a3:65 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.107/24 brd 192.168.2.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.2.111/24 scope global secondary ens33     #VIP地址
       valid_lft forever preferred_lft forever
    inet6 fe80::80b0:1d7f:b5d4:19e8/64 scope link tentative dadfailed 
......

VIP は ifconfig を通じて表示することはできませんが、hostname -Iコマンドを通じて表示することもできます。


7. ハーバーインスタンス 1 をデプロイします

ハーバー 1 192.168.2.107 ホストにハーバー サービスを展開します。

7.1 オフライン インストール パッケージをダウンロードして解凍する

$ mkdir /app   #创建安装目录
$ wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
$ tar zxvf harbor-offline-installer-v2.3.5.tgz  -C  /app/

7.2 設定ファイルの変更

構成ファイルのテンプレートを構成ファイルにコピーし、対応するパラメーターを変更します。

[root@harbor1 ~]# cd /app/harbor/
[root@harbor1 harbor]# cp harbor.yml.tmpl  harbor.yml
[root@harbor1 harbor]# vim harbor.yml
hostname: 192.168.2.107
http:
  port: 8021

#取消https安全加密访问方式:
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

## 启用外部代理,启用后hostname将不再使用
external_url: http:192.168.2.111:8121

## 配置共享存储,即挂载的NFS目录
data_volume: /data/harbor_data

_version: 2.3.0

## 配置外部数据库
external_database:
   harbor:
     host: 192.168.2.110   # 数据库主机地址
     port: 5432    # 数据库端口
     db_name: registry    # 数据库名称
     username: postgres   # 连接该数据库的用户名
     password: Lidabai666   # 连接数据库的密码
     ssl_mode: disable
     max_idle_conns: 2
     max_open_conns: 0
   notary_signer:   
     host: 192.168.2.110
     port: 5432
     db_name: notary_signer
     username: postgres
     password: Lidabai666
     ssl_mode: disable
   notary_server:
     host: 192.168.2.110
     port: 5432
     db_name: notary_server
     username: postgres
     password: Lidabai666
     ssl_mode: disable

##配置外部Redis实例:
external_redis:      
   host: 192.168.2.110:6379   #redis服务IP地址和端口号。如果redis是哨兵模式,这里应该是host_sentinel1:port_sentinel1,host_sentinel2:port_sentinel2
   password:  lidabai666  #连接外部redis服务的密码
#  sentinel_master_set:  #仅在使用 Sentinel模式(哨兵模式)时使用
   registry_db_index: 1
   jobservice_db_index: 2   #job服务的数据库索引
   chartmuseum_db_index: 3  #chartmuseum插件的Redis索引
   trivy_db_index: 5   #Trivy扫描器的数据索引
   idle_timeout_seconds: 30  #超时时间

#启用metrics数据采集插件:
metric:
   enabled: true   
   port: 9090
   path: /metrics

写真

写真

7.3 構成ファイルをコンポーネントに挿入する

Harbor.yml 構成ファイルの内容を各コンポーネントの構成ファイルに挿入します。

[root@harbor1 harbor]# ./prepare

写真

7.4 ハーバーのインストール

イメージはインストール中に自動的にインポートされ、実行が完了すると Harbor サービスが自動的に開始されます。

[root@harbor1 harbor]# ./install.sh --with-trivy --with-chartmuseum

写真

写真

-Harbor がインストールされ、正常に開始されました。- インストールが成功したことを意味します。

7.5 サービスステータスの確認

[root@harbor1 harbor]# docker-compose ps

写真

7.6 Harbor UIへのブラウザログイン

インスタンスのホスト IP + ポートを使用して、ブラウザーのハーバー UI にアクセスします。http://192.168.2.107:8021

写真

ユーザー名: admin
パスワード: Harbor12345

8. ハーバー インスタンス 2 をデプロイします

手順はハーバー インスタンス 1 のデプロイと同じです。harbor.yml ファイル内のホスト名の値を現在のホストの IP アドレスに変更するだけです。

$ mkdir /app
$ wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
$ tar zxvf harbor-offline-installer-v2.3.5.tgz  -C  /app/
$ scp  192.168.2.107:/app/harbor/harbor.yml /app/harbor/
$ vim /app/harbor/harbor.yml’
hostname: 192.168.2.108

9. サービスの検証

9.1 ブラウザアクセス VIP とポート

http://192.168.2.111:8121

Harbor UI インターフェイスでイメージのプッシュ、プル、ユーザー作成、プロジェクト作成などが正常であるかどうかをテストします。

写真

9.2 コマンドラインを使用して Harbor にログインする

$ docker login http://192.168.2.111:8121 -u admin -p Harbor12345

写真

エラーが発生します:
デーモンからのエラー応答: Get https://192.168.2.111:8121/v2/: http: サーバーが HTTPS クライアントに HTTP 応答を返しました。Docker 構成ファイルにパラメーターを追加します。

[root@harbor1 harbor]# vim  /etc/docker/daemon.json
{
   "registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
   "exec-opts": ["native.cgroupdriver=systemd"],
   "registry-mirrors": ["https://3hjcmqfe.mirror.aliyuncs.com"],
   "insecure-registries": ["192.168.2.111:8121"],
   "log-driver": "json-file",
   "log-opts": {
           "max-size": "500m",
           "max-file": "2"
        }
}
[root@harbor1 harbor]# systemctl restart docker   #然后重启docker

9.3 イメージを Harbor にプッシュする

[root@harbor1 harbor]# docker pull alpine:3.16
[root@harbor1 harbor]# docker tag alpine:3.16 192.168.2.111:8121/library/alpine:3.16
[root@harbor1 harbor]# docker  push 192.168.2.111:8121/library/alpine:3.16

その後、画像が正常にプッシュされたことが Harbor UI で確認できます。

写真

おすすめ

転載: blog.csdn.net/lqzixi/article/details/132517929
おすすめ