目前為止,docker官方的registry鏡像分為兩個(gè)版本,v2和v2以前的版本,我管它叫v1,v1使用python編寫的,之后的v2用的go語(yǔ)言,而且它們的API也不一樣,本文將分別搭建基于SSL和登錄認(rèn)證的以上兩個(gè)版本的docker私服。
registry(v2)
搭建環(huán)境:172.16.71.52 (contos7,docker1.8)
首先下載鏡像
創(chuàng)建證書
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
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í)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)證上還需要把生成的根證書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í)有所幫助,也希望大家多多支持腳本之家。