目錄
@ 本地鏡像發布流程
1. docker pull registry 下載鏡像
2. docker run 運行私有庫registry
3. docker commit 構建鏡像
4. docker tag 修改新鏡像,使之符合私服規范tag
5. 修改配置文件使之支持http
6. curl驗證私服庫上有什么鏡像
7. push推送 pull拉取 run驗證
@ 本地鏡像發布流程
1. docker pull registry 下載鏡像
Docker Registry是官方提供的工具,可以用于構建私有鏡像倉庫
2. docker run 運行私有庫registry
[root@rockylinux docker_registry]# pwd
/root/docker_registry
[root@rockylinux docker_registry]# docker run -d -p 5000:5000 -v /root/docker_registry/:/tmp/registry --privileged=true registry
默認情況,倉庫被創建在容器的/var/lib/registry目錄下,建議自行用容器卷映射,方便于宿主機聯調(調試和開發)
3. docker commit 構建鏡像
[root@rockylinux ~]# docker run -it --name ifconfigubuntu ubuntu /bin/bash
root@6d6fe54d8a52:/# ifconfig
bash: ifconfig: command not found
root@6d6fe54d8a52:/# apt-get update
root@6d6fe54d8a52:/# apt-get install -y net-tools
root@6d6fe54d8a52:/# which ifconfig
/usr/sbin/ifconfig
----------------------------------------------------------------------------------------
[root@rockylinux ~]# docker commit -m="this add ifconfig" -a="fujiang" 6d6fe54d8a52 ifconfigubuntu:1.2
sha256:c14a3d7cdae651f3dbcd580c155ec08e87a3a062e677ebd10b51772377074eb5
[root@rockylinux ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ifconfigubuntu 1.2 c14a3d7cdae6 10 seconds ago 126MB
registry latest b8604a3fe854 2 years ago 26.2MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
[root@rockylinux ~]# docker run -it ifconfigubuntu:1.2
root@dd818118ec9c:/# which ifconfig
/usr/sbin/ifconfig
4. docker tag 修改新鏡像,使之符合私服規范tag
公式:docker tag 鏡像:Tag Host:Port/Repository:Tag
[root@rockylinux ~]# docker tag ifconfigubuntu:1.2 172.16.12.51:5000/ifconfigubuntu:1.2[root@rockylinux ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ifconfigubuntu 1.2 c14a3d7cdae6 36 minutes ago 126MB
172.16.12.51:5000/ifconfigubuntu 1.2 c14a3d7cdae6 36 minutes ago 126MB
5. 修改配置文件使之支持http
[root@rockylinux ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://3ozi8ijo.mirror.aliyuncs.com"],"insecure-registries": ["172.16.12.51:5000"]
}
systemctl daemon-reload
systemctl restart docker
注意:為json格式 , 不要遺漏
6. curl驗證私服庫上有什么鏡像
[root@rockylinux ~]# curl -X GET http://172.16.12.51:5000/v2/_catalog
{"repositories":[]}
#初始為空
HTTP API V2 :HTTP API V2 | Docker Documentation
這個命令用于通過 curl
工具向 Docker Registry 發送一個 HTTP GET 請求,以獲取鏡像倉庫(repository)列表。具體來說,它訪問的是 Docker Registry API 的 _catalog
端點,該端點會返回一個 JSON 對象,列出所有在該 Registry 中存在的鏡像倉庫。
curl -XGET http://192.168.111.162:5000/v2/_catalog
-X
參數用于指定 HTTP 請求方法,這里是GET
方法。實際上,對于GET
請求來說,-XGET
可以省略,因為GET
是curl
的默認方法。- 例如,
curl http://192.168.111.162:5000/v2/_catalog
與curl -XGET http://192.168.111.162:5000/v2/_catalog
效果是相同的。
-
http
:使用 HTTP 協議。192.168.111.162
:目標服務器的 IP 地址。5000
:目標服務器上運行 Docker Registry 服務的端口。/v2/_catalog
:Docker Registry API 的_catalog
端點,用于獲取鏡像倉庫的列表。 返回示例, 假設您在本地 Registry 中有兩個鏡像倉庫ubuntu
和nginx
,響應可能會是這樣的:-
7. push推送 pull拉取 run驗證
[root@rockylinux ~]# docker push 172.16.12.51:5000/ifconfigubuntu:1.2[root@rockylinux ~]# curl -XGET http://172.16.12.51:5000/v2/_catalog
{"repositories":["ifconfigubuntu"]}[root@rockylinux ~]# docker pull 172.16.12.51:5000/ifconfigubuntu:1.2docker run 驗證