Linux中國

使用 Docker 企業版搭建自己的私有註冊伺服器

Docker 真的很酷,特別是和使用虛擬機相比,轉移 Docker 鏡像十分容易。如果你已準備好使用 Docker,那你肯定已從 Docker Hub 上拉取過完整的鏡像。Docker Hub 是 Docker 的雲端註冊伺服器服務,它包含成千上萬個供選擇的 Docker 鏡像。如果你開發了自己的軟體包並創建了自己的 Docker 鏡像,那麼你會想有自己私有的註冊伺服器。如果你有搭配著專有許可的鏡像,或想為你的構建系統提供複雜的持續集成(CI)過程,則更應該擁有自己的私有註冊伺服器。

Docker 企業版包括 Docker 可信註冊伺服器 Docker Trusted Registry (DTR)。這是一個具有安全鏡像管理功能的高可用的註冊伺服器,為在你自己的數據中心或基於雲端的架構上運行而構建。在接下來,我們將了解到 DTR 是提供安全、可重用且連續的軟體供應鏈的一個關鍵組件。你可以通過我們的免費託管小樣立即開始使用,或者通過下載安裝進行 30 天的免費試用。下面是開始自己安裝的步驟。

配置 Docker 企業版

DTR 運行於通用控制面板(UCP)之上,所以開始前要安裝一個單節點集群。如果你已經有了自己的 UCP 集群,可以跳過這一步。在你的 docker 託管主機上,運行以下命令:

# 拉取並安裝 UCP
docker run -it -rm -v /var/run/docker.sock:/var/run/docker.sock -name ucp docker/ucp:latest install

當 UCP 啟動並運行後,在安裝 DTR 之前你還有幾件事要做。針對剛剛安裝的 UCP 實例,打開瀏覽器。在日誌輸出的末尾應該有一個鏈接。如果你已經有了 Docker 企業版的許可證,那就在這個界面上輸入它吧。如果你還沒有,可以訪問 Docker 商店獲取 30 天的免費試用版。

準備好許可證後,你可能會需要改變一下 UCP 運行的埠。因為這是一個單節點集群,DTR 和 UCP 可能會以相同的埠運行它們的 web 服務。如果你擁有不只一個節點的 UCP 集群,這就不是問題,因為 DTR 會尋找有所需空閑埠的節點。在 UCP 中,點擊「管理員設置 -> 集群配置」並修改控制器埠,比如 5443。

安裝 DTR

我們要安裝一個簡單的、單節點的 DTR 實例。如果你要安裝實際生產用途的 DTR,那麼你會將其設置為高可用(HA)模式,即需要另一種存儲介質,比如基於雲端的對象存儲或者 NFS(LCTT 譯註:Network File System,網路文件系統)。因為目前安裝的是一個單節點實例,我們依然使用默認的本地存儲。

首先我們需要拉取 DTR 的 bootstrap 鏡像。boostrap 鏡像是一個微小的獨立安裝程序,包括了連接到 UCP 以及設置和啟動 DTR 所需的所有容器、卷和邏輯網路。

使用命令:

# 拉取並運行 DTR 引導程序
docker run -it -rm docker/dtr:latest install -ucp-insecure-tls

注意:默認情況下,UCP 和 DTR 都有自己的證書,系統無法識別。如果你已使用系統信任的 TLS 證書設置 UCP,則可以省略 -ucp-insecure-tls 選項。另外,你可以使用 -ucp-ca 選項來直接指定 UCP 的 CA 證書。

然後 DTR bootstrap 鏡像會讓你確定幾項設置,比如 UCP 安裝的 URL 地址以及管理員的用戶名和密碼。從拉取所有的 DTR 鏡像到設置全部完成,只需要一到兩分鐘的時間。

保證一切安全

一切都準備好後,就可以向註冊伺服器推送或者從中拉取鏡像了。在做這一步之前,讓我們設置 TLS 證書,以便與 DTR 安全地通信。

在 Linux 上,我們可以使用以下命令(只需確保更改了 DTR_HOSTNAME 變數,來正確映射我們剛剛設置的 DTR):

# 從 DTR 拉取 CA 證書(如果 curl 不可用,你可以使用 wget)
DTR_HOSTNAME=< DTR 主機名>
curl -k https://$(DTR_HOSTNAME)/ca > $(DTR_HOSTNAME).crt
sudo mkdir /etc/docker/certs.d/$(DTR_HOSTNAME)
sudo cp $(DTR_HOSTNAME) /etc/docker/certs.d/$(DTR_HOSTNAME)
# 重啟 docker 守護進程(在 Ubuntu 14.04 上,使用 `sudo service docker restart` 命令)
sudo systemctl restart docker

對於 Mac 和 Windows 版的 Docker,我們會以不同的方式安裝客戶端。轉入「設置 -> 守護進程」,在「不安全的註冊伺服器」部分,輸入你的 DTR 主機名。點擊「應用」,docker 守護進程應在重啟後可以良好使用。

推送和拉取鏡像

現在我們需要設置一個倉庫來存放鏡像。這和 Docker Hub 有一點不同,如果你做的 docker 推送倉庫中不存在,它會自動創建一個。要創建一個倉庫,在瀏覽器中打開 https://<Your DTR hostname> 並在出現登錄提示時使用你的管理員憑據登錄。如果你向 UCP 添加了許可證,則 DTR 會自動獲取該許可證。如果沒有,請現在確認上傳你的許可證。

進入剛才的網頁之後,點擊「新建倉庫」按鈕來創建新的倉庫。

我們會創建一個用於存儲 Alpine linux 的倉庫,所以在名字輸入處鍵入 「alpine」,點擊「保存」(在 DTR 2.5 及更高版本中叫「創建」)。

現在我們回到 shell 界面輸入以下命令:

# 拉取 Alpine Linux 的最新版
docker pull alpine:latest
# 登入新的 DTR 實例
docker login <Your DTR hostname>
# 標記上 Alpine 使能推送其至你的 DTR
docker tag alpine:latest <Your DTR hostname>/admin/alpine:latest
# 向 DTR 推送鏡像
docker push <Your DTR hostname>/admin/alpine:latest

就是這樣!我們剛剛推送了最新的 Alpine Linux 的一份拷貝,重新打了標籤以便將其存儲到 DTR 中,並將其推送到我們的私有註冊伺服器。如果你想將鏡像拉取至不同的 Docker 引擎中,按如上所示設置你的 DTR 證書,然後執行以下命令:

# 從 DTR 中拉取鏡像
docker pull <Your DTR hostname>/admin/alpine:latest

DTR 具有許多優秀的鏡像管理功能,例如鏡像的緩存、映像、掃描、簽名甚至自動化供應鏈策略。這些功能我們在後期的博客文章中更詳細的探討。

via: https://blog.docker.com/2018/01/dtr/

作者:Patrick Devine 譯者:fuowang 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國