搭建docker registry私有倉庫并配置用戶認(rèn)證
在工作過程中,有時候會碰到需要把docker鏡像放到另外一臺機(jī)器上運(yùn)行,提交到公網(wǎng)的docker hub太慢,如果每次導(dǎo)出文件傳輸再導(dǎo)入又太麻煩,還不方便進(jìn)行版本控制、自動部署等操作。于是docker官方提供了一套簡單的實(shí)現(xiàn)方案,就是Registry鏡像。

docker-registry.png
話不多說,現(xiàn)在開始一步一步搭建私有docker倉庫。
服務(wù)器IP:192.168.1.33
-
首先拉取鏡像,執(zhí)行一下命令:
docker pull registry
-
為了讓數(shù)據(jù)持久化避免丟失,我們可以創(chuàng)建存儲卷或者直接映射到宿主機(jī)目錄。
docker create volume registry_data
docker run -d --restart always --name registry -p 5000:5000 -v registry_data:/var/lib/registry registry
或者映射到宿主機(jī):
docker run -d --restart always --name registry -p 5000:5000 -v /data/registry:/var/lib/registry registry
查看私有倉庫:
curl -XGET 127.0.0.1:5000/v2/_catalog
查看鏡像版本列表
curl -XGET 127.0.0.1:5000/v2/image_name/tags/list
-
push鏡像到私有倉庫
docker tag myapp 192.168.1.33:5000/myapp
docker push 192.168.1.33:5000/myapp
-
其他機(jī)器配置連接私有倉庫
每臺機(jī)器 docker 私有倉庫配置vi /etc/docker/daemon.json寫入以下內(nèi)容:
{
"insecure-registries": [
"172.16.77.71:5000"
]
}
然后重啟docker
-
設(shè)置私有倉庫的用戶認(rèn)證
私有倉庫搭建以后其他所有客戶端均可以push、pull, docker官方提供認(rèn)證方法對docker倉庫進(jìn)行權(quán)限保護(hù)
刪除原啟動的docker容器
docker stop docker-hub
docker rm docker-hub
創(chuàng)建保存賬號密碼的文件
mkdir /opt/data/auth
docker run --entrypoint htpasswd registry -Bbn username userpasswd > auth/htpasswd
重新啟動容器
docker run -d -p 5000:5000 --restart=always --name registry \
-v registry_data:/var/lib/registry \
-v /opt/data/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry
現(xiàn)在客戶端再pull、push會提示報錯,無法提交。需要登錄私有倉庫
登錄:
docker login -u username -p userpasswd 192.168.1.33:5000
退出:
docker logout 192.168.1.33:5000
至此,一個帶認(rèn)證的docker鏡像倉庫搭建完成了。
微信、知乎、簡書、CSDN等平臺搜索“道聽真說”,點(diǎn)點(diǎn)關(guān)注不迷路!
如果本文對你有一點(diǎn)點(diǎn)幫助,請點(diǎn)個贊支持一下,謝謝啦??
近期更新文章:
為什么我的數(shù)據(jù)庫那么慢,教你提升10倍MySQL性能