docker registry私服搭建的方法
目前為止,docker官方的registry鏡像分為兩個(gè)版本,v2和v2以前的版本,我管它叫v1,v1使用python編寫(xiě)的,之后的v2用的go語(yǔ)言,而且它們的API也不一樣,本文將分別搭建基于SSL和登錄認(rèn)證的以上兩個(gè)版本的docker私服。
registry(v2)
搭建環(huán)境:172.16.71.52 (contos7,docker1.8)
首先下載鏡像
docker pull resigtry:2
創(chuàng)建證書(shū)
mkdir -p certs && openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt
復(fù)制domain.crt到指定目錄,172.16.71.52.xip.io為私有倉(cāng)庫(kù)所在服務(wù)器的域名,5000為registry的端口號(hào)
cp /certs/domain.crt /etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt
建立登錄認(rèn)證
mkdir auth docker run --entrypoint htpasswd registry:2 -Bbn 你的用戶名 你的密碼 > auth/htpasswd
重啟docker
systemctl restart docker
run起來(lái)
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`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2
先登錄,再使用
docker login 172.16.71.52.xip.io:5000 docker tag redis 172.16.71.52.xip.io:5000/redis docker push 172.16.71.52.xip.io:5000/redis
檢查下,image是否進(jìn)入了我們搭建的私有倉(cāng)庫(kù)
# 找到外部掛載的目錄
docker inspect --format {{'json .Mounts'}} registry
# push進(jìn)來(lái)的image都安靜的躺在這里
cd /tmp/data/docker/registry/v2/repositories
以下是注意事項(xiàng):
1.創(chuàng)建認(rèn)證證書(shū)時(shí)common name應(yīng)該用registry所在機(jī)器的域名,本人用IP測(cè)試沒(méi)有成功。
2.docker run之前確保5000端口沒(méi)有被占用,啟動(dòng)成功以后用docker logs看下有沒(méi)有報(bào)錯(cuò)
3.push和pull之前要docker login一下
4.想要通過(guò)安全認(rèn)證記得把生成的 domain.crt 復(fù)制到/etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt,其中172.16.71.52.xip.io為私服的域名,5000為registry的對(duì)外端口
5.v2的api變了,訪問(wèn)v1/search會(huì)報(bào)錯(cuò)404 not found,可以通過(guò)/v2/_catalog查看私有倉(cāng)庫(kù)的目錄,v2的aip參見(jiàn)這里
參考
https://docs.docker.com/registry/deploying/
https://docs.docker.com/engine/reference/commandline/inspect/
https://docs.docker.com/registry/spec/api/
registry(V1)
V1版本的registry搭建起來(lái)比較費(fèi)勁(也有可能我沒(méi)有找到優(yōu)雅的方法),在網(wǎng)上找了一篇用nginx做SSL和登錄認(rèn)證的博文,感謝博主,可移步這里查看(親測(cè)可用)
搭建docker內(nèi)網(wǎng)私服(docker-registry with nginx&ssl on centos)
因?yàn)榘姹驹颍╠ocker1.8),在ssl認(rèn)證上還需要把生成的根證書(shū)copy到docker指定目錄(如搭建V2時(shí)描述的)
cp /etc/pki/CA/cacert.pem /etc/docker/certs.d/172.16.71.43.xip.io:5000/ca.crt
注意在其他主機(jī)訪問(wèn)私服時(shí)也要做以上操作。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
啟動(dòng)docker錯(cuò)誤systemctl status docker.service問(wèn)題及解決
文章討論了啟動(dòng)Docker和執(zhí)行docker ps命令失敗的問(wèn)題,但docker -v顯示成功,解決辦法包括在阿里云容器鏡像中找到鏡像加速器或使用公共鏡像地址,默認(rèn)情況下,Docker使用官方地址2025-01-01
Docker 容器之間的互相通信實(shí)現(xiàn)示例
本文主要介紹了Docker 容器之間的互相通信實(shí)現(xiàn)示例,通過(guò)創(chuàng)建自定義網(wǎng)絡(luò),你可以輕松地在 Docker 容器之間建立通信,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
docker容器通過(guò)ping直接運(yùn)行獲取公網(wǎng)IP操作
這篇文章主要介紹了docker容器通過(guò)ping直接運(yùn)行獲取公網(wǎng)IP操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Docker上部署?nps?和?npc?實(shí)現(xiàn)內(nèi)網(wǎng)穿透
本文介紹了如何使用Docker部署nps和npc實(shí)現(xiàn)內(nèi)網(wǎng)穿透。nps是一款高性能的內(nèi)網(wǎng)穿透代理服務(wù)器,npc是nps的客戶端,可以將內(nèi)網(wǎng)服務(wù)映射到公網(wǎng)上。通過(guò)Docker的容器化技術(shù),可以方便地部署和管理nps和npc,同時(shí)保證了應(yīng)用的隔離性和安全性。2023-04-04
docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法
最近做項(xiàng)目,遇到這樣問(wèn)題,docker中的mysql不能啟動(dòng),下面這篇文章主要給大家介紹了關(guān)于docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
docker-compose部署配置jenkins的詳細(xì)教程
這篇文章主要介紹了docker-compose部署配置jenkins的詳細(xì)教程,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
生產(chǎn)環(huán)境中安全運(yùn)行Docker容器
本文是一篇譯文,給大家詳細(xì)介紹如何在生產(chǎn)環(huán)境中安全運(yùn)行Docker容器,有需要的小伙伴可以參考下2017-01-01
Docker-利用dockerfile來(lái)搭建tomcat服務(wù)的方法
這篇文章主要介紹了Docker-利用dockerfile來(lái)搭建tomcat服務(wù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01

