天天看點

基于docker-compose,搭建一個基于https通路的安全docker registy的鏡像

基于docker-compose,搭建一個基于https通路的安全docker registy的鏡像

私有倉庫進階配置

準備站點證書

配置私有倉庫

生成 http 認證檔案

編輯 docker-compose.yml

修改 hosts

啟動

測試私有倉庫功能

注意事項

上一節我們搭建了一個具有基礎功能的私有倉庫,本小節我們來使用 <code>Docker Compose</code> 搭建一個擁有權限認證、TLS 的私有倉庫。建立一個檔案夾,以下步驟均在該檔案夾中進行。

如果你擁有一個域名,國内各大雲服務商均提供免費的站點證書。你也可以使用 <code>openssl</code> 自行簽發證書。這裡假設我們将要搭建的私有倉庫位址為 <code>docker.domain.com</code>,下面我們介紹使用 <code>openssl</code> 自行簽發 <code>docker.domain.com</code> 的站點 SSL 證書。第一步建立 <code>CA</code> 私鑰。

第二步利用私鑰建立 <code>CA</code> 根證書請求檔案。

以上指令中 <code>-subj</code> 參數裡的 <code>/C</code> 表示國家,如 <code>CN</code>;<code>/ST</code> 表示省;<code>/L</code> 表示城市或者地區;<code>/O</code> 表示組織名;<code>/CN</code> 通用名稱。

第三步配置 <code>CA</code> 根證書,建立 <code>root-ca.cnf</code>。

第四步簽發根證書。

第五步生成站點 <code>SSL</code> 私鑰。

第六步使用私鑰生成證書請求檔案。

第七步配置證書,建立 <code>site.cnf</code> 檔案。

第八步簽署站點 <code>SSL</code> 證書。

這樣已經擁有了 <code>docker.domain.com</code> 的網站 SSL 私鑰 <code>docker.domain.com.key</code> 和 SSL 證書 <code>docker.domain.com.crt</code> 及 CA 根證書 <code>root-ca.crt</code>。建立 <code>ssl</code> 檔案夾并将 <code>docker.domain.com.key</code> <code>docker.domain.com.crt</code> <code>root-ca.crt</code> 這三個檔案移入,删除其他檔案。

私有倉庫預設的配置檔案位于 <code>/etc/docker/registry/config.yml</code>,我們先在本地編輯 <code>config.yml</code>,之後挂載到容器中。

将上面的 <code>username</code> <code>password</code> 替換為你自己的使用者名和密碼。

編輯 <code>/etc/hosts</code>

這樣我們就搭建好了一個具有權限認證、TLS 的私有倉庫,接下來我們測試其功能是否正常。

由于自行簽發的 CA 根證書不被系統信任,是以我們需要将 CA 根證書 <code>ssl/root-ca.crt</code> 移入 <code>/etc/docker/certs.d/docker.domain.com</code> 檔案夾中。

登入到私有倉庫。

嘗試推送、拉取鏡像。

如果我們登出,嘗試推送鏡像。

發現會提示沒有登入,不能将鏡像推送到私有倉庫中。