搭建私有仓库-registry

在Docker hub 官方上也有镜像 registry,我们在Docker中运行自己的registry

可以使用 IP或 域名访问私有仓库,如使用域名可通过DNS或hosts 文件解析 registry server 的主机名到ip的映射。

  • 1)获取官方registry 镜像运行
docker search registry    #查看registry镜像
docker pull registry     #拉取registry镜像

使用官方的 registry 镜像来启动本地的私有仓库。 用户可以通过指定参数来配置私有仓库位置。例如将目录/opt/data/registry作为私有仓库的位置。

mkdir -pv /opt/data/registry
  • 2)启动registry容器
docker run --name=reqistry --restart=always -d -p 5000:5000 -v /opt/data/registry/:/var/lib/registry registry

使用的镜像是 registry ,-d 后台容器并返回容器 id

-p 端口映射,格式为:宿主机端口:容器端口        #将容器的 5000 端口映射到 Host 的 5000 端口

-v容器  将/var/lib/registry 目录映射到 Host 的 /opt/data/registry,用于存放镜像数据,实现数据持久化。

默认情况下,registry会将仓库存放于容器的/var/lib/registry目录下

除了可以将数据保存在当前主机的文件系统上,registry也支持其他基于云的存储系统

--name:为容器创建名称,不指定随机分配名称

--restart选项:设置容器重启策略,决定容器退出时Docker守护进程是否重启刚刚退出的容器

restart选项容器的重启策略:

no,默认策略,在容器退出时不重启容器

on-failure 在容器非正常退出时(退出状态非0),才会重启容器

on-failure:3,在容器非正常退出时重启容器,最多重启3次

always 在容器退出时总是重启容器

unless-stoped 在容器退出时总是重启容器,但不考虑docker守护进程启动时就以及停止了的容器

执行命令 curl -X GET http://192.168.1.10:5000/v2/_catalog

curl 192.168.1.10:5000/v2/_catalog

 返回{"repositories":[]} 说明registry服务工作正常

Docker私有仓库已经搭建完毕 接下来往私有库上传镜像

  •  3)通过docker tag 重命名镜像(以centos:sshd和httpd镜像以为例),使之与registry匹配
 docker tag centos:7.9.2009 192.168.1.10:5000/centos:7.9
 docker tag httpd:latest 192.168.1.10:5000/httpd

 镜像名称由 repository 和 tag 两部分组成。而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx

只有 Docker Hub 上的镜像可以省略 [registry-host]:[port]

  • 4)通过docker push 上传镜像

所有docker主机都指向registry服务器:

这是因为从docker1.3.2版本开始,使用registry时,必须使用TLS保证其安全

docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报https的错误

最简单的解决办法是,在需要连接该私有仓库的所有docker宿主机上,修改docker daemon的配置文件,增加--insecure-registry参数。所以需要修改docker的启动参数,使之允许以http协议工作

 修改需要连接私有仓库的docker主机:

vim /usr/lib/systemd/system/docker.service

 重启docker、重载daemon:

systemctl daemon-reload
systemctl restart docker

注:如果docker主机是通过ip地址访问私有registry,则增加--insecure-registry参数

若开启防火墙,则须允许5000端口的通信。

  • 推送一个镜像到镜像仓库, 测试下registry服务:
docker push 192.168.1.10:5000/httpd
docker push 192.168.1.10:5000/centos:7.9

到registry服务器上查看私有仓库的镜像

curl -X GET http://192.168.1.10:5000/v2/_catalog

查看镜像的存储目录和文件(在镜像服务器)

tree /opt/data/registry/docker/registry/v2/repositories
  • 5)现在已经可通过 docker pull 从本地 registry 下载镜像了

 拉取私有库镜像:

docker pull 192.168.1.10:5000/httpd

拉取成功 除了镜像的名称长一些(包含 registry host 和 port),使用方式完全一样。以上是搭建本地 registry 的简要步骤。

registry 也支持认证,https 安全传输等特性,具体可以参考官方文档:

https://docs.docker.com/registry/configuration/

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹黄堡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值