Harbor 介紹
-
Harbor是一個開源的企業級Docker Registry服務,它提供了一個安全、可信賴的倉庫來儲存和管理Docker映象。Harbor翻譯為中文名稱為"庇護;居住;"。可以理解為是Docker映象的"居住環境"或者是映象的"庇護所"。Harbor最初由VMware公司開發,旨在解決企業級Docker映象管理的安全和可信任性問題。VMware於2016年釋出,在2017年,VMware將Harbor開源,這使得更廣泛的社群和組織可以自由地使用和貢獻程式碼。Harbor是一個成熟、功能豐富且安全可靠的企業級Docker Registry服務,為企業容器化應用的部署和管理提供了強大的支援。
-
我們在日常 Docker 容器使用和管理過程中,漸漸發現部署企業私有倉庫往往是很有必要的, 它可以幫助你管理企業的一些敏感映象, 同時由於 Docker Hub 的下載速度和 GFW 的原因, 往往需要將一些無法直接下載的映象匯入本地私有倉庫. 而 Harbor 就是部署企業私有倉庫的一個不二之選。
Harbor 特性
- 基於角色的訪問控制:使用者與 Docker 映象倉庫透過“專案”進行組織管理,一個使用者可以對多個映象倉庫在同一名稱空間(project)裡有不同的許可權。
- 映象複製:映象可以在多個 Registry 例項中複製(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。
- 圖形化使用者介面:使用者可以透過瀏覽器來瀏覽,檢索當前 Docker 映象倉庫,管理專案和名稱空間。
- AD/LDAP 支援:Harbor 可以整合企業內部已有的 AD/LDAP,用於鑑權認證管理。
- 審計管理:所有針對映象倉庫的操作都可以被記錄追溯,用於審計管理。
- 國際化:已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會新增進來。
- RESTful API:RESTful API 提供給管理員對於 Harbor 更多的操控, 使得與其它管理軟體整合變得更容易。
- 部署簡單:提供線上和離線兩種安裝工具, 也可以安裝到 vSphere 平臺(OVA 方式)虛擬裝置。
Harbor 和 Registry的比較
Harbor和Registry都是Docker的映象倉庫,但是Harbor作為更多企業的選擇,是因為相比較於Regisrty來說,它具有很多的優勢。
- 提供基於Web介面的圖形化管理介面,操作更友好。
- 支援使用者、專案和映象的訪問控制機制。
- 可以對映象進行掃描查詢漏洞,提升安全性。
- 完全支援LDAP/AD等標準化的企業使用者管理。
- 可以很好地整合到CI/CD流程中。
- 提供API開放功能,便於第三方系統對接。
很適合團隊和中小企業使用。
Harbor 架構
- proxy:對應啟動元件nginx。它是一個nginx反向代理,代理Notary client(映象認證)、docker client(映象上傳下載)和瀏覽器的訪問請求(Core Service)給後端的各伺服器。
- UI(Core Service):對應啟動元件harbor-ui。底層資料儲存使用mysql資料庫,主要提供了四個子功能。
- UI:一個web管理頁面ui
- API:Harbor暴露的API服務。
- Auth:使用者認證服務,decode後的token中的使用者資訊在這裡進行認證;auth後端可以接db、ldap、uaa三種認證實現。
- Token服務:負責根據使用者在每個project中的role來為每個docker push/pull 命令釋出一個token,如果docker client傳送給registry的請求沒有帶token,registry會重定向請求到token服務建立token。
- Registry:對應啟動元件registry。負責儲存映象檔案和處理映象的pull/push命令。Harbor對映象進行強制的訪問控制,Registry會將每個客戶端的每個pull/push請求轉發到token服務來獲取有效的token。
- Admin Service:對應啟動元件harbor-admin server。是系統的配置管理中心附帶檢查儲存用量,ui和jobserver啟動時需要載入adminserver配置。
- job server:對應啟動元件harbor-jobservice。負責映象複製工作,它和Registry通訊。從一個Registry pull映象然後push到另一個Registry,並記錄job_log.
- Log Collector:對應啟動元件harbor-log。日誌彙總元件,透過docker的log-driver把日誌彙總到一起。
- DB:對應啟動元件harbor-db,負責儲存project、user、role、replication、image_scan、access等的metadata資料。
Harbor 大概需要以下幾個容器組成:
- ui (Harbor的核心服務)。
- log (執行著rsyslog的容器,進行日誌收集)。
- mysql (由官方mysql映象構成的資料庫容器)。
- Nginx (使用Nginx做反向代理)。
- registry (官方的Docker registry)。
- adminserver (Harbor的配置資料管理器)。
- jobservice (Harbor的任務管理服務)。
- redis (用於儲存session)。
本文harbor安裝版本:harbor-offline-installer-v2.11.1.tgz
需要特別注意:由於Harbor是基於Docker Registry V2版本,所以Docker Engine必須大於20.10.10-ce+版本,docker-compose必須要大於v1.18.0+版本!
安裝 Docker
詳細安裝步驟可參考
- 《Docker 知識梳理及其 CentOS7.9 線上/離線安裝使用》
- 《Ubuntu 22.04 LTS 線上/離線安裝 Docker》
# 安裝必要的依賴包
root@ubuntu2204:~# apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
# 新增軟體源的GPG金鑰及docker源(阿里)
root@ubuntu2204:~# curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
root@ubuntu2204:~# add-apt-repository "deb [arch=$(dpkg --print-architecture)] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 選擇安裝指定穩定版, 例如 5:25.0.5-1~ubuntu.22.04~jammy
root@ubuntu2204:~# apt-cache madison docker-ce | awk '{ print $3 }'
5:27.3.1-1~ubuntu.22.04~jammy
5:27.3.0-1~ubuntu.22.04~jammy
......
5:26.0.2-1~ubuntu.22.04~jammy
5:26.0.1-1~ubuntu.22.04~jammy
5:26.0.0-1~ubuntu.22.04~jammy
5:25.0.5-1~ubuntu.22.04~jammy
5:25.0.4-1~ubuntu.22.04~jammy
......
root@ubuntu2204:~# VERSION_STRING=5:25.0.5-1~ubuntu.22.04~jammy
root@ubuntu2204:~# apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin -y
# 檢視docker資訊
root@ubuntu2204:~# docker -v
Docker version 25.0.5, build 5dc9bcc
root@ubuntu2204:~#
root@ubuntu2204:~# docker version
Client: Docker Engine - Community
Version: 25.0.5
API version: 1.44
Go version: go1.21.8
Git commit: 5dc9bcc
Built: Tue Mar 19 15:05:10 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.5
API version: 1.44 (minimum version 1.24)
Go version: go1.21.8
Git commit: e63daec
Built: Tue Mar 19 15:05:10 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.22
GitCommit: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
runc:
Version: 1.1.14
GitCommit: v1.1.14-0-g2c9f560
docker-init:
Version: 0.19.0
GitCommit: de40ad0
root@ubuntu2204:~# ps -ef | grep docker
root 16048 1 0 14:56 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 16245 12531 0 14:57 pts/1 00:00:00 grep --color=auto docker
# 啟動|停止|重啟|檢視|開機自啟
root@ubuntu2204:~# systemctl start|stop|restart|status|enable docker
# 測試 docker 是否安裝正確
root@ubuntu2204:~# docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:d211f485f2dd1dee407a80973c8f129f00d54604d2c90732e8e320e5038a0348
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
# 若能正常輸出以上資訊,則說明安裝成功。
安裝 Harbor 倉庫
配置HTTPS證書
# 生成證書頒發機構證書
# 1.生成 CA 證書私鑰
root@ubuntu2204:~# openssl genrsa -out ca.key 4096
# 2.生成 CA 證書
root@ubuntu2204:~# openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=GD/L=GZ/O=DovOps/OU=IT/CN=zwc.harbor.com" -key ca.key -out ca.crt
# 引數說明:
# C,Country,代表國家
# ST,STate,代表省份
# L,Location,代表城市
# O,Organization,代表組織,公司
# OU,Organization Unit,代表部門
# CN,Common Name,代表伺服器域名
# 生成伺服器證書
# 1.生成私鑰
root@ubuntu2204:~# openssl genrsa -out zwc.harbor.com.key 4096
# 2.生成證書籤名請求 (CSR)
root@ubuntu2204:~# openssl req -sha512 -new -subj "/C=CN/ST=GD/L=GZ/O=DovOps/OU=IT/CN=zwc.harbor.com" -key zwc.harbor.com.key -out zwc.harbor.com.csr
# 3.生成 x509 v3 擴充套件檔案
root@ubuntu2204:~# cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=zwc.harbor.com
DNS.2=svr.harbor.com
EOF
# 4.使用 v3.ext 檔案來為您的 Harbor 主機生成證書
root@ubuntu2204:~# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in zwc.harbor.com.csr -out zwc.harbor.com.crt
Certificate request self-signature ok
subject=C = CN, ST = GD, L = GZ, O = DovOps, OU = IT, CN = zwc.harbor.com
# 向 Harbor 和 Docker 提供證書
# 1.將伺服器證書和金鑰複製到 Harbor 主機上的 certficates 資料夾中(根據自己實際環境)
root@ubuntu2204:~# mkdir -p /data/app/harbor/certs
root@ubuntu2204:~# cp zwc.harbor.com.crt /data/app/harbor/certs
root@ubuntu2204:~# cp zwc.harbor.com.key /data/app/harbor/certs
# 2.轉變 zwc.harbor.com.crt 到 docker.zwc.harbor.com.crt,供 Docker 使用
root@ubuntu2204:~# openssl x509 -inform PEM -in zwc.harbor.com.crt -out docker.zwc.harbor.com.cert
# 3.將伺服器證書、金鑰和 CA 檔案複製到 Harbor 主機上的 Docker 證書資料夾中。您必須首先建立適當的資料夾。
root@ubuntu2204:~# mkdir -p /etc/docker/certs.d/zwc.harbor.com
root@ubuntu2204:~# cp docker.zwc.harbor.com.cert /etc/docker/certs.d/zwc.harbor.com
root@ubuntu2204:~# cp zwc.harbor.com.key /etc/docker/certs.d/zwc.harbor.com
root@ubuntu2204:~# cp ca.crt /etc/docker/certs.d/zwc.harbor.com
# 4.重新啟動 Docker
root@ubuntu2204:~# systemctl restart docker
# 說明
root@ubuntu2204:~# tree /etc/docker/certs.d/
/etc/docker/certs.d/
└── zwc.harbor.com
├── ca.crt <-- Certificate authority that signed the registry certificate
├── docker.zwc.harbor.com.cert <-- Server certificate signed by CA
└── zwc.harbor.com.key <-- Server key signed by CA
下載安裝 Harbor
- Harbor 官網地址:https://goharbor.io
- Harbor github:harbor-releases
- 下載離線版本:【harbor-offline-installer-v2.11.1.tgz】
# 獲取Harbor最新穩定版
root@ubuntu2204:~# curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f4 | grep '.tgz'
https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz.asc
https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-online-installer-v2.11.1.tgz
https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-online-installer-v2.11.1.tgz.asc
# 下載離線Harbor
root@ubuntu2204:~# wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
root@ubuntu2204:~# tar -xf harbor-offline-installer-v2.11.1.tgz -C /data/app
root@ubuntu2204:~# cd /data/app/harbor/
root@ubuntu2204:/data/app/harbor# ls
LICENSE certs common.sh harbor.v2.11.1.tar.gz harbor.yml.tmpl install.sh prepare
# 編輯harbor.yml配置檔案
root@ubuntu2204:/data/app/harbor# cp harbor.yml.tmpl harbor.yml
root@ubuntu2204:/data/app/harbor# vim harbor.yml
......
4 # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
5 hostname: 172.16.70.162 //設定訪問地址,可以是ip、主機名,不可以設定為127.0.0.1或localhost
6
7 # http related config
8 http: //啟用http
9 # port for http, default is 80. If https enabled, this port will redirect to https port
10 port: 80 //預設http埠
11
12 # https related config
13 https: //啟用https(註釋則為禁用)
14 # https port for harbor, default is 443
15 port: 443
16 # The path of cert and key files for nginx
17 certificate: /data/app/harbor/certs/zwc.harbor.com.crt //啟用時,證書路徑(禁用則註釋)
18 private_key: /data/app/harbor/certs/zwc.harbor.com.key //啟用時,私鑰路徑(禁用則註釋)
19 # enable strong ssl ciphers (default: false)
20 # strong_ssl_ciphers: false
......
46 # Remember Change the admin password from UI after launching Harbor.
47 harbor_admin_password: Harbor@54321 //修改harbor登入密碼
......
65 # The default data volume
66 data_volume: /data/app/harbor/data //修改harbor倉庫資料目錄(安裝Harbor時會自動建立)
......
164 # The directory on your host that store log
165 location: /data/app/harbor/log/harbor //修改日誌路徑(安裝Harbor時會自動建立)
......
# 安裝並啟動trivy漏洞掃描工具
root@ubuntu2204:/data/app/harbor# ./install.sh --with-trivy
[Step 0]: checking if docker is installed ...
Note: docker version: 25.0.5
[Step 1]: checking docker-compose is installed ...
Note: Docker Compose version v2.29.7
[Step 2]: loading Harbor images ...
......
[Step 3]: preparing environment ...
[Step 4]: preparing harbor configs ...
prepare base dir is set to /data/app/harbor
......
[Step 5]: starting Harbor ...
......
✔ ----Harbor has been installed and started successfully.---- # 提示安裝成功
root@ubuntu2204:/data/app/harbor# ls
LICENSE certs common common.sh data docker-compose.yml harbor.v2.11.1.tar.gz harbor.yml harbor.yml.tmpl install.sh log prepare
# 檢視執行中的harbor相關容器(應該是啟動10個容器)
root@ubuntu2204:/data/app/harbor# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
545f561eabfd goharbor/harbor-jobservice:v2.11.1 "/harbor/entrypoint.…" About a minute ago Up About a minute (healthy) harbor-jobservice
85e7e42c1ea4 goharbor/nginx-photon:v2.11.1 "nginx -g 'daemon of…" About a minute ago Up About a minute (healthy) 0.0.0.0:80->8080/tcp, \
:::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp nginx
938f3c7392ee goharbor/trivy-adapter-photon:v2.11.1 "/home/scanner/entry…" About a minute ago Up About a minute (healthy) trivy-adapter
8e12aab73943 goharbor/harbor-core:v2.11.1 "/harbor/entrypoint.…" About a minute ago Up About a minute (healthy) harbor-core
c8d115b85841 goharbor/harbor-db:v2.11.1 "/docker-entrypoint.…" About a minute ago Up About a minute (healthy) harbor-db
30c6ab0f77c6 goharbor/harbor-registryctl:v2.11.1 "/home/harbor/start.…" About a minute ago Up About a minute (healthy) registryctl
ad0ec6ffdfb8 goharbor/redis-photon:v2.11.1 "redis-server /etc/r…" About a minute ago Up About a minute (healthy) redis
b35f315c7932 goharbor/registry-photon:v2.11.1 "/home/harbor/entryp…" About a minute ago Up About a minute (healthy) registry
2edff162d014 goharbor/harbor-portal:v2.11.1 "nginx -g 'daemon of…" About a minute ago Up About a minute (healthy) harbor-portal
e6736ea4ca01 goharbor/harbor-log:v2.11.1 "/bin/sh -c /usr/loc…" About a minute ago Up About a minute (healthy) 127.0.0.1:1514->10514/tcp harbor-log
# 檢視docker相關埠
root@ubuntu2204:/data/app/harbor# netstat -ntpl | grep docker
tcp 0 0 127.0.0.1:1514 0.0.0.0:* LISTEN 17754/docker-proxy
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 18387/docker-proxy
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18427/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 18398/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 18436/docker-proxy
# 檢視本機IP
root@ubuntu2204:/data/app/harbor# hostname -I
172.16.70.162 172.17.0.1 172.18.0.1
安裝 docker-compose
- github下載地址: compose-releases
- 下載:【docker-compose-v2.29.7-linux-x86_64】
root@ubuntu2204:~# VERSION_COMPOSE=v2.29.7
root@ubuntu2204:~# curl -L "https://github.com/docker/compose/releases/download/$VERSION_COMPOSE/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 賦執行許可權
root@ubuntu2204:~# chmod +x /usr/local/bin/docker-compose
root@ubuntu2204:~# docker-compose -v
Docker Compose version v2.29.7
root@ubuntu2204:~# docker-compose -f /data/app/harbor/docker-compose.yml ps
WARN[0000] /data/app/harbor/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
harbor-core goharbor/harbor-core:v2.11.1 "/harbor/entrypoint.…" core About a minute ago Up About a minute (healthy)
harbor-db goharbor/harbor-db:v2.11.1 "/docker-entrypoint.…" postgresql About a minute ago Up About a minute (healthy)
harbor-jobservice goharbor/harbor-jobservice:v2.11.1 "/harbor/entrypoint.…" jobservice About a minute ago Up About a minute (healthy)
harbor-log goharbor/harbor-log:v2.11.1 "/bin/sh -c /usr/loc…" log About a minute ago Up About a minute (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal goharbor/harbor-portal:v2.11.1 "nginx -g 'daemon of…" portal About a minute ago Up About a minute (healthy)
nginx goharbor/nginx-photon:v2.11.1 "nginx -g 'daemon of…" proxy About a minute ago Up About a minute (healthy) 0.0.0.0:80->8080/tcp, \
[::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp
redis goharbor/redis-photon:v2.11.1 "redis-server /etc/r…" redis About a minute ago Up About a minute (healthy)
registry goharbor/registry-photon:v2.11.1 "/home/harbor/entryp…" registry About a minute ago Up About a minute (healthy)
registryctl goharbor/harbor-registryctl:v2.11.1 "/home/harbor/start.…" registryctl About a minute ago Up About a minute (healthy)
trivy-adapter goharbor/trivy-adapter-photon:v2.11.1 "/home/scanner/entry…" trivy-adapter 18 minutes ago Up 4 minutes (healthy)
# 注意:如果harbor.yml配置修改了,要先執行"./prepare"命令進行配置載入,然後再重啟harbor服務。
# 停止|啟動|重啟
root@ubuntu2204:~# docker-compose stop|start|restart
# 另外:
# docker-compose down -v # 停止並刪除容器(資料保留在檔案系統中,因此不會丟失任何資料)
# docker-compose up -d # 建立並啟動容器
修改admin密碼
# 1.修改harbor的登陸使用者密碼,則最好在harbor web介面裡直接修改。
# 2.忘記harbor的web密碼,建議刪除data源資料的database,重新部署。
# docker-compose down -v
# rm -rf /data/app/harbor/data/database
# vim harbor.yaml #在這裡重置或修改密碼
# docker-compose up -d
- 修改本地WIN電腦hosts檔案,做好harbor主機的域名解析
172.16.70.162 zwc.harbor.com
172.16.70.162 svr.harbor.com
- 將名為"ca.crt"的CA證書下載到本地WIN電腦,瀏覽器再匯入該證書
- 1.Web 域名訪問:
https://zwc.harbor.com
- 2.Web IP 訪問:
https://172.16.70.162
- 1.Web 域名訪問:
- 預設賬號:admin , 密碼:Harbor@54321 (對應harbor.yml中的配置)
使用 Harbot 倉庫
首先在Harbor web介面裡最好建立一個自己需要的"專案" (或者使用預設的"library"專案),專案公開和私有:
- Public: 所有使用者對於公開專案都有讀許可權。
- Private: 私有專案只能被有特定使用者許可權的人去訪問。
如建立一個公開專案"202411_public",點選進去可以看到推送命令的資訊提示。
-
映象打標籤的命令:
docker tag 映象名:標籤 harbot倉庫地址/倉庫專案名/映象名:標籤
- docker tag SOURCE_IMAGE[:TAG] 172.16.70.162/202411_public/REPOSITORY[:TAG]
-
推送到harbot倉庫的命令:
docker push harbot倉庫地址/倉庫專案名/映象名:標籤
- docker push 172.16.70.162/202411_public/REPOSITORY[:TAG]
-
從harbot倉庫拉取映象的命令:
docker pull harbot倉庫地址/倉庫專案名/映象名:標籤
- docker pull 172.16.70.162/202411_public/REPOSITORY[:TAG]
harbor登入 映象推/拉
# 登入報錯
root@ubuntu2204:~# docker login 172.16.70.162
Username: admin
Password:
Error response from daemon: Get "http://172.16.70.162/v2/": dial tcp 172.16.70.162:80: connect: connection refused
# 解決辦法
root@ubuntu2204:~# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerpull.com",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
],
"insecure-registries": ["172.16.70.162"] # 新增此行
}
# 修改過後重啟docker, 重啟Harbor服務
root@ubuntu2204:~# systemctl daemon-reload && systemctl restart docker
root@ubuntu2204:~# docker-compose -f /data/app/harbor/docker-compose.yml restart
# 再次登入
root@ubuntu2204:~# docker login 172.16.70.162
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/#credentials-store
Login Succeeded
# 登入賬號資訊儲存位置,若不刪除後續登入,則無需輸入使用者名稱和密碼
root@ubuntu2204:~# cat /root/.docker/config.json
{
"auths": {
"172.16.70.162": {
"auth": "YWRtaW46SGFyYm9yQDU0MzIx"
}
}
# 1.檢視本地映象
root@ubuntu2204:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/harbor-exporter v2.11.1 cdf68efc001e 2 months ago 114MB
goharbor/redis-photon v2.11.1 acf90a312d47 2 months ago 170MB
goharbor/trivy-adapter-photon v2.11.1 24a8273e807a 2 months ago 339MB
goharbor/harbor-registryctl v2.11.1 43fca2a06374 2 months ago 168MB
goharbor/registry-photon v2.11.1 9da6663b36f2 2 months ago 90.3MB
goharbor/nginx-photon v2.11.1 193a1b77b7d4 2 months ago 159MB
goharbor/harbor-log v2.11.1 2752e033bfbb 2 months ago 169MB
goharbor/harbor-jobservice v2.11.1 a8005a88b3dc 2 months ago 165MB
goharbor/harbor-core v2.11.1 eaf65baad3f6 2 months ago 191MB
goharbor/harbor-portal v2.11.1 f58813018a49 2 months ago 167MB
goharbor/harbor-db v2.11.1 be56f8030c48 2 months ago 277MB
goharbor/prepare v2.11.1 1d00ffdb2e67 2 months ago 216MB
# 2.本地映象打標籤並推送至Harbor
root@ubuntu2204:~# docker tag goharbor/nginx-photon:v2.11.1 172.16.70.162/202411_public/nginx-photon:v2
root@ubuntu2204:~# docker images | grep nginx
172.16.70.162/202411_public/nginx-photon v2 193a1b77b7d4 2 months ago 159MB
goharbor/nginx-photon v2.11.1 193a1b77b7d4 2 months ago 159MB
root@ubuntu2204:~# docker push 172.16.70.162/202411_public/nginx-photon:v2
The push refers to repository [172.16.70.162/202411_public/nginx-photon]
7a130cf406bb: Pushed
fa65d0b345aa: Pushed
v2: digest: sha256:b7a54e6b04ffe19096cc5a788fa3364bc2dea742c26a990ea3270bf20eaa723d size: 741
# 3.拉取dockerhub映象,打標籤並推至Harbor
root@ubuntu2204:~# docker pull mysql:8.4.3
root@ubuntu2204:~# docker tag mysql:8.4.3 172.16.70.162/202411_public/mysql:8.4.3
root@ubuntu2204:~# docker images | grep mysql
172.16.70.162/202411_public/mysql 8.4.3 ed66f13824d5 4 weeks ago 592MB
mysql 8.4.3 ed66f13824d5 4 weeks ago 592MB
root@ubuntu2204:~# docker push 172.16.70.162/202411_public/mysql:8.4.3
The push refers to repository [172.16.70.162/202411_public/mysql]
488946e535dc: Pushed
c6a372379ade: Pushed
4baca2f64123: Pushed
e7f948391a9f: Pushed
3f0758c2bc58: Pushed
96bad7ffa575: Pushed
9a7be671c0ad: Pushed
4dae3171e4f9: Pushed
5cebbdcae534: Pushed
217e34a4f824: Pushed
8.4.3: digest: sha256:0b6d2de7d79984b386696b75aca8341fea4456775e2b22f806a463f2199d4624 size: 2411
- 檢視Harob倉庫