Docker学习之路:私有仓库registry的搭建

使用registry镜像创建私有仓库

部署环境是CentOS7.5

到docker仓库pull镜像

docker pull registry

创建一个自定义配置文件:config.yml

version: 0.1
log:
  fields:
    service: registry
storage:
  #添加delete配置,是否允许删除仓库镜像,默认是false,这里设置成true
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

接下来运行registry镜像

#创建目录,将config.yml放在目录下
mkdir /data/dockerhub/registry -p  &&  mv config.yml /data/dockerhub
#运行registry容器
docker run --name registry  -d -p 5000:5000 -v /data/dockerhub/registry:/var/lib/registry  -v /data/dockerhub/config.yml:/etc/docker/registry/config.yml   registry 

接下来便是测试

#
docker pull nginx:1.9.1
# 假设linux主机的IP是192.168.1.2,那么这里修改tag为仓库的tag
docker tag nginx:1.9.1   192.168.1.2:5000/nginx:1.9.1
# 添加安全配置[以便pull,push的时候报错
# 报错的原因为https与http的问题 docker->registry:https,registry只提供http服务]
sed -i "s/ExecStart=\/usr\/bin\/dockerd/ExecStart=\/usr\/bin\/dockerd --insecure-registry 192.168.1.2:5000/" /usr/lib/systemd/system/docker.service
# 重启docker
systemctl daemon-reload
systemctl restart docker
#上传镜像到私有仓库
docker push 192.168.1.2:5000/nginx:1.9.1
# 需要注意的是添加安全配置是在需要pull,push的主机上都要添加,当其他主机访问时,其他主机也需要做安全配置
# pull
docker pull 192.168.1.2:5000/nginx:1.9.1

最后我们的上传的文件怎么管理呢

## 查看镜像列表[可以直接用curl发送get请求查看]
curl -XGET http://192.168.1.2:5000/v2/_catalog
## 查看单个镜像的详情[这里以nginx为例]
curl -XGET http://192.168.1.2:5000/v2/nginx/tags/list
## 如果镜像较多可以镜像分页显示,传入参数n=<integer>
# 语法如下,即在查询请求上添加参数:GET /v2/<name>/tags/list?n=<integer>
## 删除镜像[请注意sha256的值,是上传后的镜像独有的,push之后会显示到终端]
curl -I -X DELETE http://192.168.1.2:5000/v2/nginx/manifests/sha256:a42a428525996f3a84d466ee628a074cac568e0e8c99b5d6f7398be342337039
#删除后会发现nginx的tags由之前的1.9.1变成了null
curl -XGET http://192.168.1.2:5000/v2/nginx/tags/list
#此时我们其实只是删除了元数据,并没有删除层数据
#下面我们进入容器查看registry的使用量
 docker exec  -it registry sh
#进入容器后,执行
du -chs /var/lib/registry
#接着使用registry的垃圾回收机制
registry garbage-collect /etc/docker/registry/config.yml
#然后再查看/var/lib/registry
du -chs /var/lib/registry
#此时的层数据已经删除了
总结:搭建docker的私有仓库,其中用到registry,命令可到github官方文档查看,另外用到了curl命令处理请求,当然企业级的项目可能会用到harbor等仓库,这里先不做部署.另外涉及到docker层数据,元数据的概念,关于元数据和层数据后面会说到.

相关的文档可以查看docker registry在github上的api文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值