摘要:官方文檔對(duì)如何搭建私有倉(cāng)庫(kù)說(shuō)的已經(jīng)很詳細(xì)了,我在這里主要介紹一下使用自簽發(fā)證書(shū)如何搭建私有倉(cāng)庫(kù)并認(rèn)證成功。生成自簽發(fā)證書(shū)。登錄成功后再次執(zhí)行操作,會(huì)出現(xiàn)的報(bào)錯(cuò)。這是因?yàn)檎J(rèn)為傳輸過(guò)來(lái)的證書(shū)的簽署方是一個(gè)未知的,因此驗(yàn)證失敗。
docker官方文檔對(duì)如何搭建私有倉(cāng)庫(kù)說(shuō)的已經(jīng)很詳細(xì)了,我在這里主要介紹一下使用自簽發(fā)證書(shū)如何搭建私有倉(cāng)庫(kù)并認(rèn)證成功。
生成自簽發(fā)證書(shū)。假設(shè)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
執(zhí)行以上命令,生成證書(shū),Common Name那里要輸入我們r(jià)egistry的域名,生成的證書(shū)只對(duì)該域名有效。其他的可以任意填。生成后可以在certs目錄下查看到證書(shū)。
生成鑒權(quán)密碼文件注意使用時(shí)username替換為你自己的用戶(hù)名,password替換為你自己的密碼。
$ mkdir auth $ docker run --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd $ ls auth啟動(dòng)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
如果沒(méi)有registry鏡像會(huì)自動(dòng)下載然后啟動(dòng),可以使用阿里云提供的加速器。
現(xiàn)在完成了registry服務(wù)器的搭建,可以嘗試pull image到registry:
$ docker pull busybox // 從官方拉去鏡像作為我們的測(cè)試鏡像 $ docker tag busybox:latest registry.domain.com:5000/busybox:latest // 為busybox打tag,tag的前綴一定要為我們r(jià)egistry服務(wù)器的域名。 $ docker push registry.domain.com:5000/busybox:latest // 將鏡像推送到我們的registry服務(wù)器
如果直接這樣去push,會(huì)失敗,并且出現(xiàn) no basic auth credentials的錯(cuò)誤,這是因?yàn)槲覀儧](méi)有進(jìn)行登錄認(rèn)證。
$ docker login registry.domain.com:5000 $ Username: username $ Password: password WARNING: login credentials saved in ~/.docker/config.json Login Succeeded
登錄成功后再次執(zhí)行push操作,會(huì)出現(xiàn)x509: certificate signed by unknown authority的報(bào)錯(cuò)。這是因?yàn)閐ocker client認(rèn)為server傳輸過(guò)來(lái)的證書(shū)的簽署方是一個(gè)unknown authority(未知的CA),因此驗(yàn)證失敗。我們需要讓docker client安裝我們的CA證書(shū):
$ 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 //安裝證書(shū)后,重啟Docker Daemon
再次執(zhí)行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
這里需要注意:如果使用自簽署的證書(shū),那么所有要與Registry交互的Docker主機(jī)都需要安裝registry.domain.com的ca.crt(domain.crt)。但如果你使用知名CA,這一步也就可以忽略。如果是MacOS版的docker也是一樣的操作,盡管它連/etc/docker都不存在,一樣去創(chuàng)建目錄就好了。只是macOS的用戶(hù)想要認(rèn)證生效需要執(zhí)行額外的命令:
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /etc/docker/certs.d/registry.domain.com:5000/ca.crt此時(shí)在mac上執(zhí)行docker login才可成功。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27129.html
摘要:清除所有處于終止?fàn)顟B(tài)的容器訪問(wèn)倉(cāng)庫(kù)倉(cāng)庫(kù)是集中存放鏡像的地方。倉(cāng)庫(kù)可以看成是一個(gè)具體的項(xiàng)目或目錄。是注冊(cè)服務(wù)器地址,是倉(cāng)庫(kù)名。生成認(rèn)證文件編輯修改編輯啟動(dòng)測(cè)試私有倉(cāng)庫(kù)功能登錄到私有倉(cāng)庫(kù)嘗試推送拉取鏡像端口若被占用請(qǐng)嘗試用代理 docker save load 與 docker export import 利用ssh pv Linux管道 實(shí)現(xiàn)鏡像遷移(帶進(jìn)度條) docker save ...
摘要:上一篇文章搭建了一個(gè)具有基礎(chǔ)功能的私有倉(cāng)庫(kù),這次來(lái)搭建一個(gè)擁有權(quán)限認(rèn)證的私有倉(cāng)庫(kù)。移動(dòng)證書(shū)到目錄。身份驗(yàn)證為用戶(hù)創(chuàng)建一個(gè)帶有一個(gè)條目的密碼文件,密碼為創(chuàng)建倉(cāng)庫(kù)啟動(dòng)注冊(cè)表,指示它使用證書(shū)。注冊(cè)表在端口默認(rèn)的端口上運(yùn)行。 上一篇文章搭建了一個(gè)具有基礎(chǔ)功能的私有倉(cāng)庫(kù),這次來(lái)搭建一個(gè)擁有權(quán)限認(rèn)證、TLS 的私有倉(cāng)庫(kù)。 環(huán)境準(zhǔn)備 系統(tǒng):Ubuntu 17.04 x64 IP:198.13.48...
摘要:架構(gòu)介紹主要組件在架構(gòu)上主要由五個(gè)組件構(gòu)成的等服務(wù),通過(guò)一個(gè)前置的反向代理統(tǒng)一接收瀏覽器客戶(hù)端的請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給后端不同的服務(wù)。目前不支持功能已提交。 前言 對(duì)于 Harbor 這樣一個(gè)優(yōu)秀的 Docker Registry 管理開(kāi)源項(xiàng)目,以下內(nèi)容基本上來(lái)自前人已有的研究,我只是將其在實(shí)踐中進(jìn)行了測(cè)試,并整理匯集了相關(guān)資料供大家參考,同時(shí)針對(duì) Harbor 與 Rancher產(chǎn)品的...
摘要:私有倉(cāng)庫(kù)是,并在中運(yùn)行。不要使用或?yàn)橹鳈C(jī)名注冊(cè)表服務(wù)需要由外部客戶(hù)端訪問(wèn)或,默認(rèn)為用于訪問(wèn)和令牌通知服務(wù)的協(xié)議。打開(kāi)或關(guān)閉,默認(rèn)打開(kāi)打開(kāi)此屬性時(shí),準(zhǔn)備腳本創(chuàng)建私鑰和根證書(shū),用于生成驗(yàn)證注冊(cè)表令牌。 上一篇文章搭建了一個(gè)具有基礎(chǔ)功能,權(quán)限認(rèn)證、TLS 的私有倉(cāng)庫(kù),但是Docker Registry 作為鏡像倉(cāng)庫(kù),連管理界面都沒(méi)有,甚至連一些運(yùn)維必備的功能都是缺失的,還有什么 Docker...
閱讀 1058·2021-11-18 13:23
閱讀 763·2021-11-08 13:16
閱讀 876·2021-10-11 10:58
閱讀 3523·2021-09-22 15:26
閱讀 1753·2021-09-08 10:42
閱讀 1831·2021-09-04 16:45
閱讀 1747·2019-08-30 15:54
閱讀 2578·2019-08-30 13:45