使用公共 Registry

Docker Hub 是 Docker 公司维护的公共 Registry。用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中。如果不希望别人访问自己的镜像,也可以购买私有 repository。

除了 Docker Hub,quay.io 是另一个公共 Registry,提供与 Docker Hub 类似的服务。

下面介绍如何用 Docker Hub 存取我们的镜像。

  1. 首先得在 Docker Hub 上注册一个账号。

  2. 在 Docker Host 上登录。

    这里用的是我自己的账号,用户名为 cloudman6,输入密码后登录成功。

  3. 修改镜像的 repository 使之与 Docker Hub 账号匹配。
    Docker Hub 为了区分不同用户的同名镜像,镜像的 registry 中要包含用户名,完整格式为:[username]/xxx:tag
    我们通过 docker tag 命令重命名镜像。

    注:Docker 官方自己维护的镜像没有用户名,比如 httpd。

  4. 通过 docker push 将镜像上传到 Docker Hub。 

    Docker 会上传镜像的每一层。因为 cloudman6/httpd:v1 这个镜像实际上跟官方的 httpd 镜像一模一样,Docker Hub 上已经有了全部的镜像层,所以真正上传的数据很少。同样的,如果我们的镜像是基于 base 镜像的,也只有新增加的镜像层会被上传。如果想上传同一 repository 中所有镜像,省略 tag 部分就可以了,例如:  docker push cloudman6/httpd

  5. 登录 https://hub.docker.com,在Public Repository 中就可以看到上传的镜像。 如果要删除上传的镜像,只能在 Docker Hub 界面上操作。

  6. 这个镜像可被其他 Docker host 下载使用了。 

下一节讨论如何搭建本地 Registry。

搭建本地 Registry

Docker Hub 虽然非常方便,但还是有些限制,比如:

  1. 需要 internet 连接,而且下载和上传速度慢。

  2. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的。

  3. 安全原因很多组织不允许将镜像放到外网。

解决方案就是搭建本地的 Registry。

Docker 已经将 Registry 开源了,同时在 Docker Hub 上也有官方的镜像 registry。下面我们就在 Docker 中运行自己的 registry。

  1. 启动 registry 容器。

    我们使用的镜像是 registry:2。 docker run -tid -p 5000:5000 -v /home/docker_registry:/var/lib/registry registry:2

  2. -d 是后台启动容器。
    -p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。端口映射我们会在容器网络章节详细讨论。
    -v 将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。-v 的使用我们会在容器存储章节详细讨论。

  3. 通过 docker tag 重命名镜像,使之与 registry 匹配。
    我们在镜像的前面加上了运行 registry 的主机名称和端口。
    前面已经讨论了镜像名称由 repository 和 tag 两部分组成。而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx
    只有 Docker Hub 上的镜像可以省略 [registry-host]:[port] 。

  4. 通过 docker push 上传镜像。

  5. 现在已经可通过 docker pull 从本地 registry 下载镜像了。
    除了镜像的名称长一些(包含 registry host 和 port),使用方式完全一样。

  6. 上传下载和查看[注意127.0.0.1最好改成宿主机的ip]

查看私有仓库有哪些镜像
curl http://127.0.0.1:5000/v2/_catalog 上传镜像
docker tag centos  127.0.0.1:5000/centos //标记一下tag必须要带有私有仓库的ip:port
docker push 127.0.0.1:/centos
报错:
  The push refers to a repository [192.168.1.100:5000/registry]   Get https://192.168.1.100:5000/v1/_ping: http: server gave HTTP response to HTTPS client
解决:/etc/docker/daemon.json 文件里添加下面红色的部份。
  {"registry-mirrors": ["http://db411c61.m.daocloud.io"],"insecure-registries":["192.168.159.30:5000"]}
下载镜像 docker pull 127.0.0.1:/centos

以上是搭建本地 registry 的简要步骤。当然 registry 也支持认证,https 安全传输等特性,具体可以参考官方文档 https://docs.docker.com/registry/configuration/

docker仓库管理(9)的更多相关文章

  1. [第十一篇]——Docker 仓库管理之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 仓库管理 仓库(Repository)是集中存放镜像的地方.以下介绍一下 Docker Hub.当然不止 docker hub,只是远程的服务商不一样,操作都是一样的. Docker H ...

  2. Docker学习(五)——Docker仓库管理

    Docker仓库管理     仓库(Repository)是集中存放镜像的地方. 1.Docker Hub       目前Docker官方维护了一个公共仓库Docker Hub.大部分需求都可以通过 ...

  3. 【Docker】第四篇 Docker仓库管理

    一.仓库概述 仓库(Repository):Docker仓库主要用于镜像的存储,它是镜像分发.部署的关键.仓库分为公共仓库和私有仓库. 注册服务器(Registry)和仓库区别:注册服务器上往往存放着 ...

  4. Docker仓库管理

    1.# docker pull registry //下载registry镜像,registry为docker官方提供的一个镜像,我们可以用它来创建本地的docker私有仓库. 2.# docker ...

  5. 011.Docker仓库管理

    一 Docker仓库介绍 docker 仓库,即 registry,实现了镜像的管理.分发,同时还包括用户的认证.docker registry 仓库是一个无状态的.高可靠的服务器应用程序,用来存储d ...

  6. Docker 仓库管理

    仓库 ( registry ) 是一个用来存放镜像的地方,当我们执行 docker pull centos 去拉取 centos 镜像时,默认是从 Docker Hub 这个公共仓库来拉取的: 对于企 ...

  7. docker 实践(一)

    docker 简介 容器虚拟化,比传统的虚拟化轻量 2013年出现,发展非常迅猛 Redhat在6.5版本开始支持docker 使用go语言开发,基于apache2.0协议 开源软件,项目代码在git ...

  8. 012.Docker私有仓库多Harbor同步部署

    一 Harbor主从介绍 harbor官方默认提供主从复制的方案来解决镜像同步问题,通过复制的方式,我们可以实时将测试环境harbor仓库的镜像同步到生产环境harbor,类似于如下流程: Harbo ...

  9. 【Docker】Docker 目录

    目录: [Docker]第一篇 Docker的初始化安装部署 [Docker]第二篇 Docker镜像管理 [Docker]第三篇 Docker容器管理 [Docker]第四篇 Docker仓库管理

随机推荐

  1. php ceil()函数 语法

    php ceil()函数 语法 ceil()函数怎么用? php ceil()函数的作用是向上舍入为最接近的整数,语法是ceil(number),表示返回不小于参数X的下一个整数,如果没有小数,返回参 ...

  2. UVA 10529 - Dumb Bones (概率dp)

    题目描述 You are trying to set up a straight line of dominos, standing on end, to be pushed over later f ...

  3. hdu 6092 Rikka with Subset (集合计数,01背包)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  4. Network基础(四):MAC地址表及邻居信息查看、配置接口速率及双工模式、配置交换机管理IP

    一.MAC地址表及邻居信息查看 目标: 本例要求为修改计算机名并加入工作组: 查看交换机MAC地址表 查看CISCO设备邻居信息 方案: 网络拓扑,如下图所示. 步骤: 步骤一:查看交换机sw1的ma ...

  5. 大碗宽面Beta迭代阶段第十二周会议记录

    本周一晚上我们在熟悉的宿舍楼一楼大厅进行了本周的小组会议. 对于上周的任务,前端的同学修改统一了导航栏和footer,在课程评价界面中添加了“添加评论”功能,其中含有,是否修改过该课程的单选框,评论, ...

  6. xcode Delete current line

    Delete a line like eclipse CTRL+D (tested on Xcode 4.5.1) : First of all, change these rights : sudo ...

  7. c/c++ int 范围的原因

    在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...

  8. cs224d 作业 problem set1 (二) 简单的情感分析

    使用在上一篇博客中训练好的wordvector 在这一节进行情感分析. 因为在上一节中得到的是一个词就是一个向量 所以一句话便是一个矩阵,矩阵的每一列表示一个词向量 情感分析的前提是已知一句话是 (超 ...

  9. elemeng-ui中el-select的默认选择项问题

    直接绑定将option中的value值绑定给v-model <template> <div> <el-select v-model="query"&g ...

  10. vue轮播,展示pdf

    vue轮播,展示pdf 根据左侧图片格式,右侧展示相应的pdf文件与图片.(vue中不支持pdf格式,pdf文件要放在static文件里):代码如下: <template> <!-- ...