摘要:官方文檔對如何搭建私有倉庫說的已經很詳細了,我在這里主要介紹一下使用自簽發證書如何搭建私有倉庫并認證成功。生成自簽發證書。登錄成功后再次執行操作,會出現的報錯。這是因為認為傳輸過來的證書的簽署方是一個未知的,因此驗證失敗。
docker官方文檔對如何搭建私有倉庫說的已經很詳細了,我在這里主要介紹一下使用自簽發證書如何搭建私有倉庫并認證成功。
生成自簽發證書。假設registry的域名為:registry.domain.com。
> mkdir -p certs > openssl req -newkey rsa:2048 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
執行以上命令,生成證書,Common Name那里要輸入我們registry的域名,生成的證書只對該域名有效。其他的可以任意填。生成后可以在certs目錄下查看到證書。
生成鑒權密碼文件注意使用時username替換為你自己的用戶名,password替換為你自己的密碼。
$ mkdir auth $ docker run --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd $ ls auth啟動Registry
docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v `pwd`/data:/var/lib/registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2 199ad0b3591fb9613b21b1c96f017267f3c39661a7025d30df636c6805e7ab50
如果沒有registry鏡像會自動下載然后啟動,可以使用阿里云提供的加速器。
現在完成了registry服務器的搭建,可以嘗試pull image到registry:
$ docker pull busybox // 從官方拉去鏡像作為我們的測試鏡像 $ docker tag busybox:latest registry.domain.com:5000/busybox:latest // 為busybox打tag,tag的前綴一定要為我們registry服務器的域名。 $ docker push registry.domain.com:5000/busybox:latest // 將鏡像推送到我們的registry服務器
如果直接這樣去push,會失敗,并且出現 no basic auth credentials的錯誤,這是因為我們沒有進行登錄認證。
$ docker login registry.domain.com:5000 $ Username: username $ Password: password WARNING: login credentials saved in ~/.docker/config.json Login Succeeded
登錄成功后再次執行push操作,會出現x509: certificate signed by unknown authority的報錯。這是因為docker client認為server傳輸過來的證書的簽署方是一個unknown authority(未知的CA),因此驗證失敗。我們需要讓docker client安裝我們的CA證書:
$ sudo mkdir -p /etc/docker/certs.d/registry.domain.com:5000 $ sudo cp certs/domain.crt /etc/docker/certs.d/registry.domain.com:5000/ca.crt $ sudo service docker restart //安裝證書后,重啟Docker Daemon
再次執行push操作,成功推送:
$ docker push registry.domain.com:5000/busybox:latest The push refers to a repository [registry.domain.com:5000/busybox] 0271b8eebde3: Pushed latest: digest: sha256:3571ca1b0e90e159de4fc07b3bf94ef189a0645314704f629204adb7035ecf45 size: 527
這里需要注意:如果使用自簽署的證書,那么所有要與Registry交互的Docker主機都需要安裝registry.domain.com的ca.crt(domain.crt)。但如果你使用知名CA,這一步也就可以忽略。如果是MacOS版的docker也是一樣的操作,盡管它連/etc/docker都不存在,一樣去創建目錄就好了。只是macOS的用戶想要認證生效需要執行額外的命令:
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /etc/docker/certs.d/registry.domain.com:5000/ca.crt此時在mac上執行docker login才可成功。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27129.html
摘要:清除所有處于終止狀態的容器訪問倉庫倉庫是集中存放鏡像的地方。倉庫可以看成是一個具體的項目或目錄。是注冊服務器地址,是倉庫名。生成認證文件編輯修改編輯啟動測試私有倉庫功能登錄到私有倉庫嘗試推送拉取鏡像端口若被占用請嘗試用代理 docker save load 與 docker export import 利用ssh pv Linux管道 實現鏡像遷移(帶進度條) docker save ...
摘要:上一篇文章搭建了一個具有基礎功能的私有倉庫,這次來搭建一個擁有權限認證的私有倉庫。移動證書到目錄。身份驗證為用戶創建一個帶有一個條目的密碼文件,密碼為創建倉庫啟動注冊表,指示它使用證書。注冊表在端口默認的端口上運行。 上一篇文章搭建了一個具有基礎功能的私有倉庫,這次來搭建一個擁有權限認證、TLS 的私有倉庫。 環境準備 系統:Ubuntu 17.04 x64 IP:198.13.48...
摘要:架構介紹主要組件在架構上主要由五個組件構成的等服務,通過一個前置的反向代理統一接收瀏覽器客戶端的請求,并將請求轉發給后端不同的服務。目前不支持功能已提交。 前言 對于 Harbor 這樣一個優秀的 Docker Registry 管理開源項目,以下內容基本上來自前人已有的研究,我只是將其在實踐中進行了測試,并整理匯集了相關資料供大家參考,同時針對 Harbor 與 Rancher產品的...
摘要:私有倉庫是,并在中運行。不要使用或為主機名注冊表服務需要由外部客戶端訪問或,默認為用于訪問和令牌通知服務的協議。打開或關閉,默認打開打開此屬性時,準備腳本創建私鑰和根證書,用于生成驗證注冊表令牌。 上一篇文章搭建了一個具有基礎功能,權限認證、TLS 的私有倉庫,但是Docker Registry 作為鏡像倉庫,連管理界面都沒有,甚至連一些運維必備的功能都是缺失的,還有什么 Docker...
閱讀 1039·2021-11-18 13:23
閱讀 746·2021-11-08 13:16
閱讀 855·2021-10-11 10:58
閱讀 3510·2021-09-22 15:26
閱讀 1732·2021-09-08 10:42
閱讀 1807·2021-09-04 16:45
閱讀 1733·2019-08-30 15:54
閱讀 2564·2019-08-30 13:45