Docker Registry使用記錄


一、介紹

  有時我們的服務器無法訪問互聯網,或者你不希望將自己的鏡像放到公網當中,那么你就需要Docker Registry,它可以用來存儲和管理自己的鏡像,即私有鏡像庫。

二、使用

  2.1 獲取最新鏡像,前提安裝好docker。使用命令

docker pull registry

  2.2 運行鏡像

docker run -d -p 5000:5000 --restart=always registry

  2.3 查看結果

curl http://{ip}:5000/v2/_catalog

返回json結果時,說明已經registry已經運行起來了。

三、問題記錄

3.1 上傳報錯

//上傳過程

docker tag nginx 192.168.0.24:5000/nginx 

docker push 192.168.0.24:500/nginx

//先打好標簽,然后上傳

報錯

Get https://192.168.0.24:5000/v1/_ping: http: server gave HTTP response to HTTPS client

解決方案

//在/etc/docker下,創建daemon.json文件,寫入:

{ "insecure-registries":["192.168.0.24:5000"]}  

//重啟docker

service docker restart

四、權限添加

到上面為止,registry已經可以使用了。如果想要控制registry的使用權限,使其只有在登錄用戶名和密碼之后才能使用的話,還需要做額外的設置。
registry的用戶名密碼文件可以通過htpasswd來生成:

  1. mkdir /opt/registry-var/auth/  
  2. docker run --entrypoint htpasswd registry:2.4.1 -Bbn felix felix  >> /opt/registry-var/auth/htpasswd  

上面這條命令是為felix用戶名生成密碼為felix的一條用戶信息,存在/opt/registry-var/auth/htpasswd文件里面,文件中存的密碼是被加密過的。
使用帶用戶權限的registry時候,容器的啟動命令就跟上面不一樣了,將之前的容器停掉並刪除,然后執行下面的命令:

  1. docker run -d -p 5000:5000 --restart=always \  
  2.   -v /opt/registry-var/auth/:/auth/ \  
  3.   -e "REGISTRY_AUTH=htpasswd" \  
  4.   -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \  
  5.   -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \  
  6.   -v /opt/registry-var/:/var/lib/registry/ \  
  7.   registry:2.4.1  

這時,如果直接想查看倉庫信息、pull或push都會出現權限報錯。必須先使用docker login 命令來登錄私有倉庫:

  1. docker login 192.168.0.100:5000  

根據提示,輸入用戶名和密碼即可。如果登錄成功,會在/root/.docker/config.json文件中保存賬戶信息,這樣就可以繼續使用了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM