在《Docker鏡像倉庫》一節中介紹了如何安裝 DTR、如何將其接入后端共享存儲、如何配置高可用以及如何使 DCP 和 DTR 共享一個公共的單點登錄子系統。
大多數的 DTR 配置項可在 DTR Web 界面的 Settings(設置)頁中進行設置。在General(通用)頁簽中可以配置以下內容。
? 自動更新設置。
? 許可。
? 負載均衡地址。
? 證書。
? 單點登錄。
使用 Domains & proxies(域&代理)下的 TLS Settings(TLS設置)可以修改 UCP 使用的證書。默認情況下,DTR 使用自簽名證書,但是用戶可以在該頁面配置自定義的證書。
Storage(存儲)頁簽用來配置鏡像存儲所使用的后端存儲。其他存儲相關的選項包括其他云服務提供商的對象存儲服務,以及卷和共享 NFS 的配置。
Security(安全)頁簽用于開啟或關閉鏡像掃描(Image Scanning),采用二進制級別的掃描來查找鏡像中的缺陷。在開啟鏡像掃描的情況下,用戶可以選擇基于在線(online)或離線(offline)方式來更新缺陷庫。在線方式會自動通過互聯網同步數據庫,而離線方式則用于無法接入互聯網的 DTR 實例,通過手動更新數據庫來完成。
同樣重要的一點是 Garbage Collection(垃圾回收)頁簽,當鏡像庫中的鏡像層不再被引用時,DTR 會對這些鏡像層進行垃圾回收,該頁簽用于進行與之相關的配置。默認情況下,不被引用的鏡像層不會被回收,從而會導致磁盤空間的浪費。
如果啟用垃圾回收,不被任何鏡像引用的鏡像層便會被刪除,而被至少一個鏡像引用的鏡像層不會被刪除。
Docker 可信鏡像服務是一種安全的、自行配置和管理的私有鏡像庫。它被集成在 UCP 以達到良好的開箱即用的使用體驗。
接下來將會介紹如何從 DTR 推送和拉取鏡像,以及如何使用 DTR Web 界面來查看和管理鏡像庫。
下面登錄到 DTR,并創建一個新的鏡像庫,該庫對所有的 technology/devs 團隊的成員開放推送和拉取鏡像的權限。
登錄到 DTR。DTR 的 URL 可以在 UCP Web 界面的 Admin > Admin Settings > Docker Trusted Registry 下找到。注意,DTR Web 界面可以通過端口 443 的 HTTPS 訪問。
創建一個新的組織和團隊,然后添加一個用戶。本例將創建一個名為 technology 的組織、一個名為 devs 的團隊和一個名為 nigelpoulton 的用戶。
① 單擊左側導航欄的 Organizations(組織)。
② 單擊 New Organization(新建組織)并命名為 technology。
③ 選擇新創建的 technology 組織,并單擊 TEAMS(組織)旁的 + 按鈕,如下圖所示。
④ 在選擇 devs 團隊的情況下,添加一個用戶。
本例會添加名為 nigelpoulton 的用戶,小伙伴環境中的用戶名會有不同。DTR 中對組織和團隊的修改也會反映在 UCP 中,因為它們共享賬號數據庫。
接下來創建一個新的鏡像庫,并添加 technology/devs 團隊的讀/寫權限。
在 DTR Web 界面中進行如下操作。
? 進入 Organizations > technology > devs。
? 選擇 Repositories(庫)頁簽,并創建一個新的鏡像庫
? 對鏡像庫進行如下配置。
在 technology 組織下創建的新鏡像庫命名為 test。將其配置為公開(Public),開啟推送時掃描(SCAN ON PUSH),并分配讀 / 寫(Read-write)權限。具體配置如下圖所示。
⑤ 保存修改。
至此,在 DTR 上已經有一個名為 /technology 的鏡像庫了,technology/devs 團隊對其有讀/寫權限,因此他們可以對其進行 push 和 pull 操作。
在演示如何推送一個新鏡像到剛剛創建的鏡像庫。具體通過以下幾個步驟來完成。
① 拉取一個鏡像并從新打標簽。
② 為客戶端配置一組證書。
③ 推送打了新標簽的鏡像到 DTR 庫。
④ TR Web 界面中檢查操作過程。
首先拉取一個鏡像,并為其打標簽,以便能夠推送到 DTR 倉庫。拉取什么鏡像并不重要。本例使用的是 alpine:latest 鏡像,因為它很小。
為了推送一個鏡像到一個具體的倉庫,需要將鏡像用庫的名稱打標簽。本例中,DTR 庫的全限定名為 dtr.mydns.com/technology/test。這個名字是由 DTR 的 DNS 域名與鏡像庫的名稱組合得到的。
為該鏡像打標簽,以便能夠推送到 DTR 庫。
$ docker image tag alpine:latest dtr.mydns.com/technology/test:v1
下一步就是要配置 Docker 客戶端,使其用對該庫有讀 / 寫權限的組內的用戶來認證。總體來說就是為該用戶創建一組證書,并配置 Docker 客戶端使用這些證書。
① 以管理員身份登錄 UCP,或使用有讀/寫權限的用戶登錄。
② 導航到目標用戶賬號,然后創建一個 client bundle。
③ 復制 Bundle 文件到需要進行配置的 Docker 客戶端。
④ 登錄到 Docker 客戶端,并執行以下命令。
⑤ 解壓 Bundle,并執行 Shell 腳本來進行配置。
以下命令可用于 Mac 和 Linux。
$ eval "$(
⑥ 執行 docker version 命令以確定環境配置和證書配置是否正確。
如果輸出內容的 Server 部分顯示 Version 為 ucp/x.x.x,則表示已經正確配置。這是因為 Shell 腳本對 Docker 客戶端進行了配置,使其連接到 UCP Manager 上的一個遠端 daemon。并且還會令 Docker 客戶端使用證書對所有的命令進行簽名。
接下來登錄到 DTR。小伙伴的 DTR URL 和用戶名會有差異。
$ docker login dtr.mydns.com
Username: nigelpoulton
Password:
Login Succeeded
現在可以推送打標簽的鏡像到 DTR了。
$ docker image push dtr.mydns.com/technology/test:v1
The push refers to a repository [dtr.mydns.com/technology/test]
cd7100a72410: Pushed
v1: digest: sha256:8c03...acbc size: 528
可見推送操作是成功的,下面在 DTR 的 Web 界面中進行確認。
① 先登錄到 DTR 的 Web 界面。
② 單擊左側導航欄中的 Repositories。
③ 單擊 technology/test 庫的 View Details(查看細節)。
④ 單擊 IMAGES(鏡像)頁簽。
DTR 庫中的鏡像如下圖所示。可見圖中鏡像為基于 Linux 的鏡像,它有 3 個主要缺陷。缺陷信息的出現是由于之前對鏡像庫中新推送的鏡像開啟了缺陷掃描。
現在已經成功地將鏡像推送到 DTR 上的新鏡像庫中。這時可以通過勾選鏡像左側的復選框來刪除它。由于刪除操作是不可逆的,因此一定要謹慎操作。