本文收錄在容器技術學習系列文章總目錄 1、瞭解Docker Registry 1.1 介紹 registry 用於保存docker 鏡像,包括鏡像的層次結構和元數據。 啟動容器時,docker daemon會試圖從本地獲取相關的鏡像;本地鏡像不存在時,其將從registry中下載該鏡像並保存到本地; ...
本文收錄在容器技術學習系列文章總目錄
1、瞭解Docker Registry
1.1 介紹
- registry 用於保存docker 鏡像,包括鏡像的層次結構和元數據。
- 啟動容器時,docker daemon會試圖從本地獲取相關的鏡像;本地鏡像不存在時,其將從registry中下載該鏡像並保存到本地;
- 拉取鏡像時,如果不知道registry倉庫地址,預設從Docker Hub搜索拉取鏡像
1.2 分類
- Sponsor Registry:第三方的registry,供客戶和docker社區使用;
- mirror Registry:第三方的registry,只讓客戶使用;如docker cn和阿裡雲的鏡像加速器;
- vendor Registry:服務商的registry,由發佈docker鏡像的供應商提供的registry;如紅帽提供的專有的,收費提供;
- private Registry:通過設有防火牆和額外的安全層的私有實體提供的registry;自建的registry,在本地搭建registry,節省帶寬
1.3 registry組成(repository和index)
(1)Repository
- 由特定的docker鏡像的所有迭代版本組成的鏡像倉庫;
- 一個registry中可以存在多個repository:
- repository可分為“頂層倉庫”和“用戶倉庫”
- 用戶倉庫名稱格式為“用戶名/倉庫名”
- 每個倉庫可以包含多個Tag(標簽),每個標簽對應一個鏡像
(2)Index
- 維護用戶賬戶、鏡像的校驗以及公共命名空間的信息
- 相當於為registry提供了一個完成用戶認證等功能的檢索介面
1.4 拉取上傳倉庫鏡像
(1)拉取鏡像
docker pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
- registry:倉庫伺服器地址:不指定預設是docker hub
- port:埠;預設是443,因為是https協議
- namespace:名稱空間,指是哪個用戶的倉庫,如果是頂層倉庫,可省
- name:倉庫名
- tag:標簽名;預設是latest版本
(2)上傳鏡像
docker push [OPTIONS] NAME[:TAG]
1.5 知名docker倉庫
例:docker pull quay.io/coreos/flannel:v0.10.0-amd64
博主前面的文章已經詳細介紹過,從第三方的registry 上傳拉取鏡像了;這篇就是詳細講解如果搭建私有registry ,併在私有registry上傳拉取鏡像了。
2、搭建私有倉庫 distribution
2.1 distribution 介紹
docker提供的開源Registry,但是很簡單,只能作為存儲鏡像的倉庫,沒有額外的功能;如管理頁面等
2.2 安裝啟動 distribution
兩種方案安裝,我採用的是方案2
2.2.1 方案1:使用yum安裝(直接從extras 源中下載安裝)
[root@docker2 ~]# yum info docker-distribution 已載入插件:fastestmirror Loading mirror speeds from cached hostfile 可安裝的軟體包 名稱 :docker-distribution 架構 :x86_64 版本 :2.6.2 發佈 :2.git48294d9.el7 大小 :3.5 M 源 :extras/7/x86_64 簡介 : Docker toolset to pack, ship, store, and deliver content 網址 :https://github.com/docker/distribution 協議 : ASL 2.0 描述 : Docker toolset to pack, ship, store, and deliver content [root@docker2 ~]# yum -y install docker-distribution
2.2.2 方案2:拉取鏡像,作為容器安裝
(1)拉取鏡像
[root@docker2 ~]# docker pull registry:2.6.2 2.6.2: Pulling from library/registry d6a5679aa3cf: Pull complete ad0eac849f8f: Pull complete 2261ba058a15: Pull complete f296fda86f10: Pull complete bcd4a541795b: Pull complete Digest: sha256:5a156ff125e5a12ac7fdec2b90b7e2ae5120fa249cf62248337b6d04abc574c8 Status: Downloaded newer image for registry:2.6.2
(2)啟動registry 容器
[root@docker2 ~]# docker run --name registry -p 5000:5000 -v /data/registry:/var/lib/registry -d registry:2.6.2 a43f802e737eba89879a4dc02562b38e0042db981f9bdb91782b453f0bac4119 [root@docker2 ~]# docker port registry 5000/tcp -> 0.0.0.0:5000 [root@docker2 ~]# ss -nutlp |grep 5000 tcp LISTEN 0 128 :::5000 :::* users:(("docker-proxy",pid=4901,fd=4)) [root@docker2 ~]# docker inspect -f {{."Mounts"}} registry [{bind /data/registry /var/lib/registry true rprivate}]
註:
- -p 5000:5000:將容器中的5000埠,暴露在宿主機的5000埠
- -v /data/registry:/var/lib/registry:指定宿主機存儲的位置為 /data/registry
- -d:後臺運行容器
2.3 從私有倉庫上傳下載鏡像
2.3.1 將本地的鏡像上傳到私有倉庫
(1)先將本地倉庫打上合適的標簽
[root@docker1 ~]# docker tag busybox:latest 192.168.10.102:5000/busybox:v0.1 [root@docker1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.10.102:5000/busybox v0.1 758ec7f3a1ee 13 days ago 1.15 MB busybox latest 758ec7f3a1ee 13 days ago 1.15 MB
(2)嘗試刪除鏡像
[root@docker1 ~]# docker push 192.168.10.102:5000/busybox:v0.1 The push refers to a repository [192.168.10.102:5000/busybox] Get https://192.168.10.102:5000/v1/_ping: http: server gave HTTP response to HTTPS client
上傳鏡像失敗;原因:docker 上傳下載預設只支持https協議,搭建的私有倉庫是http協議。
(3)修改重啟docker服務
[root@docker1 ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries": ["192.168.10.102:5000"] } [root@docker1 ~]# systemctl restart docker
註:就是將私有倉庫認證為安全倉庫:"insecure-registries": [""]
(4)再次上傳鏡像,成功
[root@docker1 ~]# docker push 192.168.10.102:5000/busybox:v0.1 The push refers to a repository [192.168.10.102:5000/busybox] 23bc2b70b201: Pushed v0.1: digest: sha256:cbcde3595079b1f7a6b046e96e7547fe786d5c2c8eba678bc260161bc01b8dbe size: 527
(5)在私有倉庫的伺服器上驗證
[root@docker2 ~]# ls /data/registry/docker/registry/v2/ blobs repositories
(6)從私有倉庫拉取鏡像,先刪除再拉取
[root@docker1 ~]# docker rmi 192.168.10.102:5000/busybox:v0.1 Untagged: 192.168.10.102:5000/busybox:v0.1 Untagged: 192.168.10.102:5000/busybox@sha256:cbcde3595079b1f7a6b046e96e7547fe786d5c2c8eba678bc260161bc01b8dbe [root@docker1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 758ec7f3a1ee 2 weeks ago 1.15 MB [root@docker1 ~]# docker pull 192.168.10.102:5000/busybox:v0.1 v0.1: Pulling from busybox Digest: sha256:cbcde3595079b1f7a6b046e96e7547fe786d5c2c8eba678bc260161bc01b8dbe Status: Downloaded newer image for 192.168.10.102:5000/busybox:v0.1 [root@docker1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.10.102:5000/busybox v0.1 758ec7f3a1ee 2 weeks ago 1.15 MB
3、安裝搭建私有倉庫 Harbor
3.1 認識 Harbor
3.1.1 Harbor 介紹
- Harbor gitlab項目地址:https://github.com/goharbor/harbor
- Harbor是一個開源的可信雲本機註冊表項目,用於存儲,簽名和掃描內容。Harbor通過添加用戶通常需要的功能(如安全性,身份和管理)來擴展開源Docker Distribution。使註冊表更接近構建和運行環境可以提高圖像傳輸效率。Harbor支持在註冊表之間複製映像,還提供高級安全功能,如用戶管理,訪問控制和活動審計。
- Harbour由Cloud Native Computing Foundation(CNCF)托管。如果您是一個希望幫助塑造雲原生技術發展的組織,請考慮加入CNCF。有關誰參與以及Harbour如何扮演角色的詳細信息,請閱讀CNCF 公告。
3.1.2 Harbor 特征
- 雲本機註冊表:Harbour 支持容器映像和Helm圖表,可用作雲本機環境(如容器運行時和業務流程平臺)的註冊表。
- 基於角色的訪問控制:用戶和存儲庫通過“項目”進行組織,用戶可以對項目下的圖像擁有不同的許可權。
- 基於策略的映像複製:可以基於具有多個過濾器(存儲庫,標記和標簽)的策略在多個註冊表實例之間複製(同步)映像。如果遇到任何錯誤,Harbor將自動重試進行複製。非常適合負載平衡,高可用性,多數據中心,混合和多雲場景。
- 漏洞掃描:Harbor定期掃描圖像並警告用戶漏洞。
- LDAP / AD支持:Harbor與現有企業LDAP / AD集成以進行用戶身份驗證和管理,並支持將LDAP組導入Harbor併為其分配適當的項目角色。
- 圖像刪除和垃圾收集:可以刪除圖像,並可以回收它們的空間。
- 公證:可以確保圖像的真實性。
- 圖形用戶門戶:用戶可以輕鬆瀏覽,搜索存儲庫和管理項目。
- 審計:跟蹤存儲庫的所有操作。
- RESTful API:適用於大多數管理操作的RESTful API,易於與外部系統集成。
- 易於部署:提供線上和離線安裝程式。
3.1.3 harbor 配置參數
(1)參數介紹
① 配置參數位於文件harbor.cfg中。
② 在harbor.cfg中有兩類參數,必需參數和可選參數。
- required參數:需要在配置文件中設置這些參數。如果用戶更新它們harbor.cfg並運行install.sh腳本以重新安裝Harbor,它們將生效。
- 可選參數:這些參數對於更新是可選的,即用戶可以將它們保留為預設值,併在啟動Harbour後在Web Portal上更新它們。如果它們已經啟用harbor.cfg,它們只會在首次啟動Harbour時生效。harbor.cfg將忽略對這些參數的後續更新。
③ 註意:如果您選擇通過Portal設置這些參數,請務必在Harbour啟動後立即執行此操作。特別是,您必須在Harbour中註冊或創建任何新用戶之前設置所需的auth_mode。當系統中有用戶時(除預設管理員用戶外), 無法更改auth_mode。
④ 請註意,至少需要更改hostname屬性。
(2)必需參數
- hostname:目標主機的主機名,用於訪問Portal和註冊表服務。它應該是目標電腦的IP地址或完全限定的功能變數名稱(FQDN),例如,192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1作為主機名 - 外部客戶端需要訪問註冊表服務!
- ui_url_protocol :( http或https。預設為http)用於訪問Portal和令牌/通知服務的協議。如果啟用了公證,則此參數必須為https。預設情況下,這是http。要設置https協議,請參閱使用HTTPS訪問配置Harbor。
- db_password:用於db_auth的PostgreSQL資料庫的root密碼。更改此密碼以用於任何生產用途!
- max_job_workers :(預設值為10)作業服務中的最大複製工作者數。對於每個映像複製作業,工作程式將存儲庫的所有標記同步到遠程目標。增加此數量可以在系統中實現更多併發複製作業。但是,由於每個工作者都消耗一定量的網路/ CPU / IO資源,請根據主機的硬體資源仔細選擇該屬性的值。
- customize_crt:(on or off. Default is on),如果此屬性on,在準備腳本創建註冊表的令牌生成/驗證私鑰和根證書。當外部源提供密鑰和根證書時,將此屬性設置為off。有關詳細信息,請參閱自定義密鑰和港口令牌服務證書。
- ssl_cert:SSL證書的路徑,僅在協議設置為https時應用。
- ssl_cert_key:SSL密鑰的路徑,僅在協議設置為https時應用。
- secretkey_path:用於加密或解密複製策略中遠程註冊表密碼的密鑰路徑。
- log_rotate_count:日誌文件在被刪除之前會被輪換log_rotate_count次。如果count為0,則刪除舊版本而不是旋轉。
- log_rotate_size:僅當日誌文件大於log_rotate_size位元組時才會輪換日誌文件。如果大小後跟k,則假定大小以千位元組為單位。如果使用M,則大小以兆位元組為單位,如果使用G,則大小為千兆位元組。尺寸100,尺寸100k,尺寸100M和尺寸100G都是有效的。
- http_proxy:為Clair配置http代理,例如http://my.proxy.com:3128。
- https_proxy:為Clair配置https代理,例如http://my.proxy.com:3128。
- no_proxy:為Clair配置無代理,例如127.0.0.1,localhost,core,registry。
(3)可選參數
- 電子郵件設置:Harbor需要這些參數才能向用戶發送“密碼重置”電子郵件,並且僅在需要該功能時才需要。另外,請註意,在預設情況下SSL連接時沒有啟用-如果你的SMTP伺服器需要SSL,但不支持STARTTLS,那麼你應該通過設置啟用SSL email_ssl = TRUE。如果電子郵件伺服器使用自簽名證書或不受信任證書,則設置email_insecure = true
- email_server = smtp.mydomain.com
- email_server_port = 25
- email_identity =
- email_username = [email protected]
- email_password = abc
- email_from = admin [email protected]
- email_ssl = false
- email_insecure = false
- harbor_admin_password:管理員的初始密碼。此密碼僅在Harbor首次啟動時生效。之後,將忽略此設置,並且應在Portal中設置管理員密碼。請註意,預設用戶名/密碼為admin / Harbor12345
- auth_mode:使用的身份驗證類型。預設情況下,它是db_auth,即憑據存儲在資料庫中。對於LDAP身份驗證,請將其設置為ldap_auth。重要信息:從現有Harbor實例升級時,必須確保在啟動新版本的Harbor之前auth_mode相同harbor.cfg。否則,用戶可能無法在升級後登錄。
- ldap_url:LDAP端點URL(例如ldaps://ldap.mydomain.com)。 僅在auth_mode設置為ldap_auth時使用。
- ldap_searchdn:具有搜索LDAP / AD伺服器許可權的用戶的DN(例如uid=admin,ou=people,dc=mydomain,dc=com)。
- ldap_search_pwd:ldap_searchdn指定的用戶密碼。
- ldap_basedn:查找用戶的基本DN,例如ou=people,dc=mydomain,dc=com。 僅在auth_mode設置為ldap_auth時使用。
- ldap_filter:用於查找用戶的搜索過濾器,例如(objectClass=person)。
- ldap_uid:用於在LDAP搜索期間匹配用戶的屬性,它可以是uid,cn,email或其他屬性。
- ldap_scope:搜索用戶的範圍,0-LDAP_SCOPE_BASE,1-LDAP_SCOPE_ONELEVEL,2-LDAP_SCOPE_SUBTREE。預設值為2。
- ldap_timeout:連接LDAP伺服器時超時(以秒為單位)。預設值為5。
- ldap_verify_cert:驗證來自LDAP伺服器的證書。預設為true。
- ldap_group_basedn:在LDAP / AD中查找組的基本dn,例如ou=group,dc=mydomain,dc=com。
- ldap_group_filter:搜索LDAP / AD組的過濾器,例如objectclass=group。
- ldap_group_gid:用於命名LDAP / AD組的屬性,它可以是cn,name。
- ldap_group_scope:搜索ldap組的範圍。0-LDAP_SCOPE_BASE,1-LDAP_SCOPE_ONELEVEL,2-LDAP_SCOPE_SUBTREE。預設值為2。
- self_registration :( 打開或關閉。預設打開)啟用/禁用用戶註冊他/她自己的能力。禁用時,新用戶只能由管理員用戶創建,只有管理員用戶可以在Harbor中創建新用戶。 註意:當auth_mode設置為ldap_auth時,始終禁用自註冊功能,並忽略此標誌。
- token_expiration:令牌服務創建的令牌的到期時間(以分鐘為單位),預設為30分鐘。
- project_creation_restriction:用於控制用戶有權創建項目的標誌。預設情況下,每個人都可以創建一個項目,設置為“adminonly”,這樣只有管理員才能創建項目。
(4)配置存儲後端(可選)
預設情況下,Harbor將圖像存儲在本地文件系統中。在生產環境中,您可以考慮使用其他存儲後端而不是本地文件系統,如S3,OpenStack Swift,Ceph等。這些參數是註冊表的配置。
- registry_storage_provider_name:註冊表的存儲提供程式名稱,可以是filesystem,s3,gcs,azure等。預設為filesystem。
- registry_storage_provider_config:存儲提供程式配置的逗號分隔“key:value”對,例如“key1:value,key2:value2”。預設為空字元串。
- registry_custom_ca_bundle:自定義根ca證書的路徑,它將註入到註冊表和圖表存儲庫容器的信任庫中。當用戶使用自簽名證書托管內部存儲時,通常需要這樣做。
例如,如果使用Openstack Swift作為存儲後端,則參數可能如下所示:
registry_storage_provider_name = swift registry_storage_provider_config = “ username:admin,password:ADMIN_PASS,authurl:http:// keystone_addr:35357 / v3 / aut
註意:有關註冊表存儲後端的詳細信息,請參閱“ 註冊表配置參考”。
3.2 安裝主機的先決條件
3.2.1 硬體
資源 | 容量 | 描述 |
---|---|---|
CPU | 最小2 CPU | 4 CPU是首選 |
記憶體 | 最小4GB | 8GB是首選 |
磁碟 | 最小40GB | 160GB是首選 |
3.2.2 軟體
軟體 | 版 | 描述 |
---|---|---|
Python | 2.7或更高版本 | 請註意,您可能必須在Linux發行版(Gentoo,Arch)上安裝Python,預設情況下不安裝Python解釋器 |
Docker engine | 版本1.10或更高版本 | 有關安裝說明,請參閱:https://docs.docker.com/engine/installation/ |
Docker Compose | 版本1.6.0或更高版本 | 有關安裝說明,請參閱:https://docs.docker.com/compose/install/ |
Openssl | 最新的是首選 | 為Harbor生成證書和密鑰 |
3.2.3 網路埠
埠 | 協議 | 描述 |
---|---|---|
443 | HTTPS | Harbor門戶和核心API將接受此埠上的https協議請求 |
4443 | HTTPS | 只有在啟用“公證”時才需要連接到Dock的Docker Content Trust服務 |
80 | HTTP | Harbor埠和核心API將接受此埠上的http協議請求 |
3.2.4 添加一塊50G 新硬碟(如果磁碟足夠,可忽略)
博主也是太長時間沒有進行硬碟添加的操作了,熟悉一遍
(1)查詢添加的磁碟的名字
$ fdisk -l Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
(2)對磁碟進行分區
$ fdisk /dev/sdb Command (m for help): m Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Using default response p Partition number (1-4, default 1): First sector (2048-104857599, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): Using default value 104857599 Partition 1 of type Linux and of size 50 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
(3)磁碟文件格式化
$ [root@centos7-1 ~]# mkfs.ext3 /dev/sdb1
(4)掛載磁碟
$ vim /etc/fstab 設為開機自動掛載 /dev/sdb1 /data ext3 defaults 0 0 $ mount -a 掛載磁碟
(5)驗證
[root@centos7-1 ~]# df -h /data Filesystem Size Used Avail Use% Mounted on /dev/sdb1 50G 52M 47G 1% /data
3.2.5 安裝docker編排工具 Docker Compose
方案1:直接yum安裝
[root@docker2 ~]# yum -y install docker-compose
方案2:在GitHub上選擇自己需要的版本下載安裝https://github.com/docker/compose/releases
$ curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose $ docker-compose version docker-compose version 1.23.2, build 1110ad01 docker-py version: 3.6.0 CPython version: 3.6.7 OpenSSL version: OpenSSL 1.1.0f 25 May 2017
3.4 安裝搭建Harbor
3.4.1 下載Harbor 安裝包
資源可以下載的很慢,我已經將1.7.1版本放入我的網盤了,需要的私聊
[root@docker2 ~]# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.1.tgz [root@docker2 ~]# tar -C /data/ -xvf harbor-offline-installer-v1.7.1.tgz
3.4.2 配置Harbor 服務
(1)修改harbor.cfg 配置文件
[root@docker2 ~]# cd /data/harbor/ [root@docker2 harbor]# grep "^[^#]" harbor.cfg _version = 1.7.0 hostname = docker2 ui_url_protocol = http max_job_workers = 2 customize_crt = on ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key secretkey_path = /data admiral_url = NA log_rotate_count = 50 log_rotate_size = 200M http_proxy = https_proxy = no_proxy = 127.0.0.1,localhost,core,registry email_identity = email_server = smtp.mydomain.com email_server_port = 25 email_username = [email protected] email_password = abc email_from = admin <[email protected]> email_ssl = false email_insecure = false harbor_admin_password = Harbor12345 auth_mode = db_auth ldap_url = ldaps://ldap.mydomain.com ldap_basedn = ou=people,dc=mydomain,dc=com ldap_uid = uid ldap_scope = 2 ldap_timeout = 5 ldap_verify_cert = true ldap_group_basedn = ou=group,dc=mydomain,dc=com ldap_group_filter = objectclass=group ldap_group_gid = cn ldap_group_scope = 2 self_registration = on token_expiration = 30 project_creation_restriction = everyone db_host = postgresql db_password = along db_port = 5432 db_user = postgres redis_host = redis redis_port = 6379 redis_password = along redis_db_index = 1,2,3 clair_db_host = postgresql clair_db_password = along clair_db_port = 5432 clair_db_username = postgres clair_db = postgres clair_updaters_interval = 12 uaa_endpoint = uaa.mydomain.org uaa_clientid = id uaa_clientsecret = secret uaa_verify_cert = true uaa_ca_cert = /path/to/ca.pem registry_storage_provider_name = filesystem registry_storage_provider_config = registry_custom_ca_bundle =
主要修改了:
hostname:主機名
max_job_workers:最大cpu數,小於等於自己伺服器的硬體
(2)定義docker-compose.yml 文件(可省略)
docker-compose.yml 文件是docker 編排時,對容器的一些操作:
① 埠
ports:
- 80:80
- 443:443
- 4443:4443
② 眾多存儲器路徑
如:volumes:
- /data/registry:/storage:z
在生產環境中,儘量將容器的存儲捲定義在空間較為充足的磁碟;
自己根據實際情況進行修改;
3.4.3 安裝啟動harbor
[root@docker2 harbor]# ./install.sh [Step 0]: checking installation environment ... Note: docker version: 18.03.1 Note: docker-compose version: 1.23.2 [Step 1]: loading Harbor images ... Loaded image: goharbor/registry-photon:v2.6.2-v1.7.1 Loaded image: goharbor/harbor-migrator:v1.7.1 Loaded image: goharbor/harbor-adminserver:v1.7.1 Loaded image: goharbor/harbor-core:v1.7.1 Loaded image: goharbor/harbor-log:v1.7.1 Loaded image: goharbor/harbor-jobservice:v1.7.1 Loaded image: goharbor/notary-server-photon:v0.6.1-v1.7.1 Loaded image: goharbor/clair-photon:v2.0.7-v1.7.1 Loaded image: goharbor/harbor-portal:v1.7.1 Loaded image: goharbor/harbor-db:v1.7.1 Loaded image: goharbor/redis-photon:v1.7.1 Loaded image: goharbor/nginx-photon:v1.7.1 Loaded image: goharbor/harbor-registryctl:v1.7.1 Loaded image: goharbor/notary-signer-photon:v0.6.1-v1.7.1 Loaded image: goharbor/chartmuseum-photon:v0.7.1-v1.7.1 [Step 2]: preparing environment ... Generated and saved secret to file: /data/secretkey Generated configuration file: ./common/config/nginx/nginx.conf Generated configuration file: ./common/config/adminserver/env Generated configuration file: ./common/config/core/env Generated configuration file: ./common/config/registry/config.yml Generated configuration file: ./common/config/db/env Generated configuration file: ./common/config/jobservice/env Generated configuration file: ./common/config/jobservice/config.yml Generated configuration file: ./common/config/log/logrotate.conf Generated configuration file: ./common/config/registryctl/env Generated configuration file: ./common/config/core/app.conf Generated certificate, key file: ./common/config/core/private_key.pem, cert file: ./common/config/registry/root.crt The configuration files are ready, please use docker-compose to start the service. [Step 3]: checking existing instance of Harbor ... [Step 4]: starting Harbor ... Creating network "harbor_harbor" with the default driver Creating harbor-log ... done Creating registry ... done Creating harbor-db ... done Creating registryctl ... done Creating harbor-adminserver ... done Creating redis ... done Creating harbor-core ... done Creating harbor-portal ... done Creating harbor-jobservice ... done Creating nginx ... done ✔ ----Harbor has been installed and started successfully.---- Now you should be able to visit the admin portal at http://docker2. For more details, please visit https://github.com/goharbor/harbor .
3.4.3 安裝後驗證
(1)打開了一些埠
[root@docker2 harbor]# ss -nutlp |grep docker tcp LISTEN 0 128 127.0.0.1:1514 *:* users:(("docker-proxy",pid=1440,fd=4)) tcp LISTEN 0 128 :::80 :::*