栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Docker Registry 详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker Registry 详解

Docker Registry 详解

1  了解Docker Registry 1.1 介绍
  • registry用于保存docker镜像,包括镜像的层次结构和元数据。

  • 启动容器时,docker daemon会试图从本地获取相关的镜像;本地镜像不存在时,其将从registry中下载该镜像并保存到本地;

  • 拉取镜像时,如果不知道registry仓库地址,默认从Docker Hub搜索拉取镜像

1.2 分类
  • Sponsor Registry:第三方的registry,供客户和docker社区使用;

  • mirror Registry:第三方的registry,只让客户使用;如docker cn和阿里云的镜像加速器;

  • vendor Registry:服务商的registry,由发布docker镜像的供应商提供的registry;如红帽提供的专有的,收费提供;

  • private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry;自建的registry,在本地搭建registry,节省带宽

1.3 registry组成(repository和index)

1)Repository

  • 由特定的docker镜像的所有迭代版本组成的镜像仓库;

  • 一个registry中可以存在多个repository:

    • repository可分为“顶层仓库”和“用户仓库”

    • 用户仓库名称格式为“用户名/仓库名”

  • 每个仓库可以包含多个Tag(标签),每个标签对应一个镜像

2)Index

  • 维护用户账户、镜像的校验以及公共命名空间的信息

  • 相当于为registry提供了一个完成用户认证等功能的检索接口

1.4 拉取上传仓库镜像

1)拉取镜像

docker pull [:]/[/]:

  • registry:仓库服务器地址:不指定默认是docker hub

  • port:端口;默认是443,因为是https协议

  • namespace:名称空间,指是哪个用户的仓库,如果是顶层仓库,可省

  • name:仓库名

  • tag:标签名;默认是latest版本

2)上传镜像

docker push [OPTIONS] NAME[:TAG]

1.5 知名docker仓库
  • https://hub.docker.com/

  • https://quay.io/

    例:docker pull quay.io/coreos/flannel:v0.10.0-amd64     //flannel是一个网络插件

  • 开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云

2  搭建私有仓库distribution 2.1 distribution介绍

docker提供的开源Registry,但是很简单,只能作为存储镜像的仓库,没有额外的功能;如管理页面等

2.2 安装启动distribution

方案1:使用yum安装(直接从extras 源中下载安装)

[root@docker1 ~]# yum -y install docker-distribution

方案2:拉取镜像,作为容器安装

1)拉取镜像

[root@docker2 ~]# docker pull registry:2.6.2

2)启动registry容器

[root@docker2 ~]# docker run --name registry -p 5000:5000 -v /data/registry:/var/lib/registry -d registry:2.6.2

7d3dc6b2ef67775d86eb51653774e496bf448a9a5f7965758023e46da529a57e

[root@docker2 ~]# docker ps

[root@docker2 ~]# docker port registry

5000/tcp -> 0.0.0.0:5000

5000/tcp -> :::5000

[root@docker2 ~]# ss -lntup | grep 5000

[root@docker2 ~]# docker inspect -f {{."Mounts"}} registry

[{bind  /data/registry /var/lib/registry   true rprivate}]

注:

  • -p:5000:5000:将容器中的5000端口,暴露在宿主机的5000端口

  • -v:/data/registry:/var/lib/registry:指定宿主机存储的位置为/data/registry

  • -d:后台运行容器

3  从私有仓库上传下载镜像 3.1 将本地的镜像上传到私有仓库

1)先将本地仓库打上合适的标签

[root@docker2 ~]# docker tag busybox:latest 192.168.159.146:5000/busybox:v1.0

[root@docker2 ~]# docker images

2)尝试上传镜像

[root@docker2 ~]# docker push 192.168.159.146:5000/busybox:v1.0

上传镜像失败;原因:docker上传下载默认只支持https协议,搭建的私有仓库是http协议。

3)修改重启docker服务

[root@docker2 ~]# vim /etc/docker/daemon.json

{

  "registry-mirrors": ["https://j64h7f2i.mirror.aliyuncs.com"],

  "insecure-registries": ["192.168.159.146:5000"]

}

[root@docker2 ~]# systemctl restart docker

注:就是将私有仓库认证为安全仓库:"insecure-registries": [""]

4)再次上传镜像,成功

[root@docker2 ~]# docker push 192.168.159.146:5000/busybox:v1.0    //报错原因,容器没有开启

[root@docker2 ~]# docker ps -a      //查看容器处于关闭zhuang'tai

[root@docker2 ~]# docker start registry

registry

[root@docker2 ~]# docker push 192.168.159.146:5000/busybox:v1.0

5)在私有仓库的服务器上验证

[root@docker2 ~]# ls /data/registry/docker/registry/v2/

blobs  repositories

6)从私有仓库拉取镜像,先删除再拉取

[root@docker2 ~]# docker rmi 192.168.159.146:5000/busybox:v1.0

[root@docker2 ~]# docker images      //镜像已被删除

[root@docker2 ~]# docker pull 192.168.159.146:5000/busybox:v1.0    //从私有仓库拉取镜像

[root@docker2 ~]# docker images    //镜像一被拉取到本地

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号