目录
[@ 本地镜像发布流程](#@ 本地镜像发布流程)
[1. docker pull registry 下载镜像](#1. docker pull registry 下载镜像)
[2. docker run 运行私有库registry](#2. docker run 运行私有库registry)
[3. docker commit 构建镜像](#3. docker commit 构建镜像)
[4. docker tag 修改新镜像,使之符合私服规范tag](#4. docker tag 修改新镜像,使之符合私服规范tag)
[5. 修改配置文件使之支持http](#5. 修改配置文件使之支持http)
[6. curl验证私服库上有什么镜像](#6. curl验证私服库上有什么镜像)
[7. push推送 pull拉取 run验证](#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.2
docker run 验证