镜像仓库 Docker Registry 实践-http协议
镜像仓库(Registry)是存储和分发容器镜像的服务器应用。容器镜像是容器的可移植打包格式,包含了应用程序及其依赖的所有内容。镜像仓库主要用于存储这些镜像,并允许用户通过网络将镜像拉取到本地进行部署。
镜像仓库的主要功能:
- 镜像存储: 提供集中式存储,管理多种版本的容器镜像。
- 镜像分发: 通过网络分发镜像,支持多种镜像传输协议。
- 权限控制: 通过用户认证和授权管理对镜像的访问权限。
- 镜像管理: 提供镜像的标签、版本控制等管理功能。
Docker Registry 是一个开源的镜像仓库实现,允许用户在本地或云端搭建自己的镜像仓库,提供了高效的镜像存储和分发功能。
下面记录在本地机器(已经安装docker)搭建和使用 Docker Registry。
1. 部署 Docker Registry
使用 Docker 容器运行一个 Registry 服务:
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2
root@harbor:~/harbor# docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2
2c60ce3bd400bf8307869e17b2b6308e8ab4a5c1a905378ac4386bfc76585227
root@harbor:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c60ce3bd400 registry:2 "/entrypoint.sh /etc…" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
/mnt/registry
:宿主机路径,可以自定义。/var/lib/registry
:Registry
容器存放镜像的路径,路径是固定的。
这会启动一个在本地监听 5000 端口的镜像仓库服务。
说明:
- Docker 使用 /var/lib/docker 作为默认路径来存储所有 Docker 相关文件(包括镜像)。建议您添加附加存储卷,分别给 /var/lib/docker 和 /mnt/registry 挂载至少 100G。
2. 拉取、推送镜像到 Registry
拉取、推送镜像过程与一般使用其他镜像仓库时的操作类似,如果客户端和registry位于同一台机器,host为localhost;如果客户端位于远端,使用registry所在机器的ip地址作为host。
2.1 调用接口查看当前仓库镜像列表
Docker Registry
没有像harbor那样的web界面可以直观的查看镜像仓库列表,需要通过调用接口查看:
curl -X GET http://IP:port/v2/_catalog
以本地调用查看为例,由于是新搭建的registry实例,仓库中是空的:
root@harbor:~# curl -X GET http://l