Docker私有镜像仓库registry
registry简介
官方提供了Docker Hub网站来作为一个公开的集中仓库,然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用
Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理。
docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 hub.docker.com ,它可以让我们方便的下载预先做好的镜像。
安装registry
我们可以通过获取官方的
registry镜像来运行。
这将使用官方提供的 registry 镜像来启动私有仓库,默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。我们可以通过 -v 参数将镜像文件存放在本地的指定路径。
docker run -d \
-p 5000:5000 \
-v /tmp/data/registry:/var/lib/registry \
--restart=always \
registry
这样我们的registry已经启动起来了
访问测试
这时我们可以通过浏览器访问
http://ip:5000/v2/_catalog查看仓库是否启动成功。
curl http://192.168.64.152:5000/v2/_catalog
上传镜像
registry 上传镜像的命名规范是
仓库IP:5000/镜像名称:tag
修改镜像名称
将我们的镜像改成服务规范的名字
docker tag baiyp/learn-docker-storage:0.0.3 192.168.64.153:5000/learn-docker-storage:0.0.3
推送镜像
使用命令推送镜像
docker push 192.168.64.153:5000/learn-docker-storage:0.0.3
我们发现推送报错了,这是因为docker推送默认使用的https的方式,而我们的registry只支持http的方式
修改Docker推送配置
对于 Linux 系统,我们可以在
/etc/docker/daemon.json(daemon.josn文件不存在则新建该文件)
vi /etc/docker/daemon.json
添加下面的配置
{ "insecure-registries": ["仓库IP:5000"] }
完整的配置如下
{
"insecure-registries": ["192.168.64.153:5000"],
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
执行以下命令重启重新加载配置并生效
systemctl daemon-reload
service docker restart