部署 Docker Registry 並配置認證登錄


 

 

Docker Registry 官網

Docker Registry 需要 Docker 版本高於等於 1.6.0

Registry是一個無狀態、高度可擴展的服務器側應用程序,用於存儲和允許您分發Docker鏡像

內網環境下,可以使用 Docker Registry 來解決k8s集群的鏡像拉取問題,當然,公網情況下, Docker Registry 私密性更高,比共有倉庫更適合

如果需要 Docker Registry 開啟認證功能,可以直接看配置 Docker Registry 認證

搭建 Docker Registry

創建本地映射目錄

這個目錄可以自定義,根據自身實際磁盤空間情況進行創建,將容器內的文件映射到本地,以此來達到持久化的效果

# mkdir /var/lib/registry

啟動 Docker Registry

docker命令中,冒號前面的為本地路徑或端口,冒號后面的為容器內部的路徑或端口

-p:將本地5000端口映射給容器內的5000端口(Docker Registry默認端口),本地端口可以自定義,只要是空閑的端口即可

--restart:容器的重啟策略

--name:啟動的容器名稱

-v:將本地目錄映射到容器內的/var/lib/registry目錄

-d:將容器放到后台運行

registry:鏡像名,不加tag,默認拉取latest,如果本地不存在,啟動容器前,會自動拉取

# docker run -p 5000:5000 \
--restart=always \
--name registry \
-v /var/lib/registry:/var/lib/registry \
-d registry

配置 Docker Registry

# vim /etc/docker/daemon.json

注意json語法格式

如果重啟docker失敗,日志有如下輸出,表示daemon.json文件的格式有錯誤,注意最后是否需要加上逗號

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair

"insecure-registries": ["ip:端口"]

重啟docker

# systemctl daemon-reload
# systemctl restart docker

配置 Docker Registry 認證

創建 Docker Registry 認證文件目錄

# mkdir /var/lib/registry_auth

創建 Docker Registry 認證文件

使用 Apache 的 htpasswd 來創建加密文件

# yum install -y httpd-tools
# htpasswd -Bbn admin admin > /var/lib/registry_auth/htpasswd

啟動帶認證的 Docker Registry

  • REGISTRY_AUTH=htpasswd # 以 htpasswd 的方式認證
  • REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm # 注冊認證
  • REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd # 認證的用戶密碼
# docker run -p 5000:5000 \
--restart=always \
--name registry \
-v /var/lib/registry:/var/lib/registry \
-v /var/lib/registry_auth/:/auth/ \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
-d registry

配置 Docker Registry

# vim /etc/docker/daemon.json

注意json語法格式

如果重啟docker失敗,日志有如下輸出,表示daemon.json文件的格式有錯誤,注意最后是否需要加上逗號

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair

"insecure-registries": ["ip:端口"]

重啟docker

# systemctl daemon-reload
# systemctl restart docker

登錄 Docker Registry

  • 登錄可以是免交互式,也可以是交互式的
    • docker login -u 用戶名 -p 密碼 ip:端口 # 一般不建議使用明文密碼
    • docker login -u 用戶名 -p ip:端口 # 不輸入密碼,回車后,使用交互式輸入密碼(輸入的密碼不會顯示)
    • docker login ip:端口 # 不輸入密碼和用戶名,回車后,使用交互式輸入用戶名和密碼(輸入的密碼不會顯示)
# docker login ip:端口
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

退出登錄

# docker logout ip:端口

測試 Docker Registry

給鏡像打上 Docker Registry 的倉庫標簽

# docker tag centos:7 ip:端口/centos:7

將新打標簽的鏡像上傳鏡像到倉庫

# docker push ip:端口/centos:7

查看鏡像,可以看到我們上傳的 centos 7 這個鏡像了

# curl ip:端口/v2/_catalog -u admin
Enter host password for user 'admin':
{"repositories":["centos"]}

查看鏡像包含的tag

需要先使用_catalog查看鏡像的名稱

# curl ip:端口/v2/centos/tags/list -u admin
Enter host password for user 'admin':
{"name":"centos","tags":["8","7","7.1"]}

需要先使用_catalog查看鏡像的名稱

# curl ip:端口/v2/centos/tags/list -u admin
Enter host password for user 'admin':
{"name":"centos","tags":["8","7","7.1"]}


免責聲明!

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



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