搭建私有仓库-registry
Docker搭建私有仓库,设置私有库的目录映射,实现持久化
在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/
更多推荐
所有评论(0)