一,啟動docker后,搜索registry
[root@localhost source]# systemctl start docker [root@localhost source]# docker search registry NAME DESCRIPTION STARS OFFICIAL AUTOMATED registry The Docker Registry 2.0 implementation for s… 2873 [OK]
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,下載registry容器
1,下載
[root@localhost docker]# docker pull registry
2,查看本地的鏡像:
[root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest 708bc6af7e5e 6 weeks ago 25.8MB
三,啟動registry
1,啟動registry
[root@localhost docker]# docker run -d -p 5000:5000 -v /data/docker/registry:/var/lib/registry --privileged=true --restart=always --name registry registry:latest 0e48cc6c0871bf2d5a0ee0208d3e87ae0cf4706dada93c7e80133fa22f7bbaef
[root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e48cc6c0871 registry:latest "/entrypoint.sh /etc…" 7 seconds ago Up 5 seconds 0.0.0.0:5000->5000/tcp registry
2,查看registry的ip地址
[root@localhost docker]# docker inspect registry | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2",
3,用瀏覽器訪問5000端口,判斷是否安裝成功:
這個地址:
http://172.17.0.2:5000/v2/
四,查看私有庫的鏡像列表:
[root@localhost docker]# curl http://172.17.0.2:5000/v2/_catalog {"repositories":[]}
五,我們制作一個基於centos8的nfs的鏡像
參見:
docker19.03制作一個基於centos8的帶有nfs4服務的鏡像 地址:https://www.cnblogs.com/architectforest/p/12495958.html
六,上傳一個鏡像到私有庫
我們把上面制作的鏡像上傳到我們搭建的私有庫
1,給當前鏡像打上tag:
[root@localhost ~]# docker tag nfsnginx:0.1 172.17.0.2:5000/nfsnginx:0.1
查看打tag后的效果
[root@localhost ~]# docker images | grep nfsnginx 172.17.0.2:5000/nfsnginx 0.1 fa72df9fb744 3 hours ago 328MB nfsnginx 0.1 fa72df9fb744 3 hours ago 328MB
2,開始push
[root@localhost ~]# docker push 172.17.0.2:5000/nfsnginx:0.1 The push refers to repository [172.17.0.2:5000/nfsnginx] Get https://172.17.0.2:5000/v2/: http: server gave HTTP response to HTTPS client
這個報錯是什么?
Docker與Docker Registry交互默認使用https協議,
我們搭建的Docker Registry只提供http服務,
當和Registry私有倉庫交互時會失敗,
為解決這個問題,我們啟動Docker時配置Registry不安全選項即可
說明:要用防火牆限制私有庫的訪問,不允許端口從公網上隨便訪問
3,解決上面的那個報錯:
[root@localhost ~]# vi /etc/docker/daemon.json
增加一行:
"insecure-registries":["172.17.0.2:5000"]
看例子:
[root@localhost ~]# more /etc/docker/daemon.json { "registry-mirrors":["https://o3trwnyj.mirror.aliyuncs.com"], "insecure-registries":["172.17.0.2:5000"] }
然后重啟docker服務:
[root@localhost ~]# systemctl restart docker
並再次啟動容器
[root@localhost ~]# docker start registry
registry
4,再次push:
[root@localhost ~]# docker push 172.17.0.2:5000/nfsnginx:0.1 The push refers to repository [172.17.0.2:5000/nfsnginx] 28dd39094cf0: Pushed 0683de282177: Pushed 0.1: digest: sha256:98417504960cfd0c3ddbb61f18ac8ed7e4737136cc8640f1d24c0f8f5d4eb1fe size: 741
5,上傳是否成功?我們從瀏覽器訪問這個地址:
http://172.17.0.2:5000/v2/_catalog
響應內容為:
{"repositories":["nfsnginx"]}
可以確認已上傳成功
6,查看已上傳鏡像的tag列表:
從瀏覽器訪問這個地址:
http://172.17.0.2:5000/v2/nfsnginx/tags/list
說明:nfsnginx是我們所上傳的鏡像的名字
七,從私有庫下載一個鏡像
從另一台安裝有docker的服務器上測試:
1,執行docker的pull命令:
[root@localhost liuhongdi]# docker pull 192.168.1.8:5000/nfsnginx:0.1 Error response from daemon: Get https://192.168.1.8:5000/v2/: http: server gave HTTP response to HTTPS client
說明:192.168.1.8是上面搭建registry的docker宿主機的ip
2,解決方法同上:
[root@localhost liuhongdi]# vi /etc/docker/daemon.json
增加一行:
"insecure-registries":["192.168.1.8:5000"]
然后重啟docker:
[root@localhost liuhongdi]# systemctl restart docker
3,再次測試:
[root@localhost liuhongdi]# docker pull 192.168.1.8:5000/nfsnginx:0.1 0.1: Pulling from nfsnginx 8a29a15cefae: Already exists b3f2d668510c: Pull complete Digest: sha256:98417504960cfd0c3ddbb61f18ac8ed7e4737136cc8640f1d24c0f8f5d4eb1fe Status: Downloaded newer image for 192.168.1.8:5000/nfsnginx:0.1
4,查看下載是否成功
[root@localhost liuhongdi]# docker images | grep nfsnginx 192.168.1.8:5000/nfsnginx 0.1 fa72df9fb744 4 hours ago 328MB
八,查看docker的版本
[root@localhost source]# docker --version Docker version 19.03.7, build 7141c19