Docker 真的很酷,特別是和使用虛擬機器相比,轉移 Docker 映象十分容易。如果你已準備好使用 Docker,那你肯定已從 Docker Hub 上拉取過完整的映象。Docker Hub 是 Docker 的雲端註冊伺服器服務,它包含成千上萬個供選擇的 Docker 映象。如果你開發了自己的軟體包並建立了自己的 Docker 映象,那麼你會想有自己私有的註冊伺服器。如果你有搭配著專有許可的映象,或想為你的構建系統提供複雜的持續整合(CI)過程,則更應該擁有自己的私有註冊伺服器。
Docker 企業版包括 Docker 可信註冊伺服器(DTR)。這是一個具有安全映象管理功能的高可用的註冊伺服器,為在你自己的資料中心或基於雲端的架構上執行而構建。在接下來,我們將了解到 DTR 是提供安全、可重用且連續的軟體供應鏈的一個關鍵元件。你可以通過我們的免費託管小樣立即開始使用,或者通過下載安裝進行 30 天的免費試用。下面是開始自己安裝的步驟。
DTR 執行於通用控制面板(UCP)之上,所以開始前要安裝一個單節點叢集。如果你已經有了自己的 UCP 叢集,可以跳過這一步。在你的 docker 託管主機上,執行以下命令:
# 拉取並安裝 UCPdocker 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,那麼你會將其設定為高可用(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).crtsudo 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 使能推播其至你的 DTRdocker 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 具有許多優秀的映象管理功能,例如映象的快取、映像、掃描、簽名甚至自動化供應鏈策略。這些功能我們在後期的部落格文章中更詳細的探討。