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

  1. 需要 internet 连接,而且下载和上传速度慢。
  2. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的。
  3. 安全原因很多组织不允许将镜像放到外网。

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

在 Docker Hub 上也有官方的镜像 registry。我们可以在 Docker 中运行自己的 registry。

启动 registry 容器

 root@ubuntu:~# docker run -d -p : -v /myregistry:/var/lib/registry registry:
Unable to find image 'registry:2' locally
: Pulling from library/registry
cd784148e348: Pull complete
0ecb9b11388e: Pull complete
918b3ddb9613: Pull complete
5aa847785533: Pull complete
adee6f546269: Pull complete
Digest: sha256:979960c6c4e885f9c55f19c85ed33ebca2341a56998a82eecb3529ff0c7c3a7e
Status: Downloaded newer image for registry:
f27eb6348026862f5744a916f67c4079d36c54fd46091d27a6c5d916f00ae5bc
  • 使用的镜像是 registry:2。
  • -d 是后台启动容器。
  • -p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。
  • -v 将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。

通过 docker tag 重命名镜像,使之与 registry 匹配

 root@ubuntu:~# docker tag gsophy/docker.edu:v1 localhost:/gsophy/docker.edu:v1  #在镜像的前面加上了运行 registry 的主机名称和端口
root@ubuntu:~#
root@ubuntu:~# docker images localhost:/gsophy/docker.edu
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:/gsophy/docker.edu v1 ef1dc54703e2 weeks ago 132MB
  • 镜像名称由 repository 和 tag 两部分组成。
  • 而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx
  • 只有 Docker Hub 上的镜像可以省略 [registry-host]:[port]

通过 docker push 上传镜像

 root@ubuntu:~# docker push localhost:/gsophy/docker.edu:v1
The push refers to repository [localhost:/gsophy/docker.edu]
64446057e402: Pushed
13a694db88ed: Pushed
3fc0ec65884c: Pushed
30d0b099e805: Pushed
7b4e562e58dc: Pushed
v1: digest: sha256:246fed9aa9be7aaba1e04d9146be7a3776c9a40b5cfb3242d3427f79edee37db size:
root@ubuntu:~#

现在已经可通过 docker pull 从本地 registry 下载镜像了

 root@ubuntu:~# docker pull localhost:/gsophy/docker.edu:v1
v1: Pulling from gsophy/docker.edu
177e7ef0df69: Pull complete
65e7b631411e: Pull complete
3249ef8b9272: Pull complete
43ed8fedd0f6: Pull complete
02d3f33bda9d: Pull complete
Digest: sha256:246fed9aa9be7aaba1e04d9146be7a3776c9a40b5cfb3242d3427f79edee37db
Status: Downloaded newer image for localhost:/gsophy/docker.edu:v1
root@ubuntu:~#
root@ubuntu:~# docker images localhost:/gsophy/docker.edu:v1
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:/gsophy/docker.edu v1 ef1dc54703e2 weeks ago 132MB

除了镜像的名称长一些(包含 registry host 和 port),使用方式完全一样。

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

----------------------引用来自-----------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587627&idx=1&sn=b85416005be844a921c146883ac0e6b8&chksm=8d3080b2ba4709a42459bd4eb977e225e2847c7bc39888c3f6f3e2d903eaf54556518683fa57&scene=21#wechat_redirect

第 3 章 镜像 - 020 - 搭建本地 Registry的更多相关文章

  1. 020、搭建本地Registry(2019-01-11 周五)

    参考https://www.cnblogs.com/CloudMan6/p/6902325.html   Docker Hub 虽然方便,但还是有些限制,比如     1.需要Internet连接,上 ...

  2. 搭建本地 Registry - 每天5分钟玩转 Docker 容器技术(20)

    Docker Hub 虽然非常方便,但还是有些限制,比如: 需要 internet 连接,而且下载和上传速度慢. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 reposito ...

  3. docker 笔记 (6)搭建本地registry

    转:http://blog.csdn.net/felix_yujing/article/details/51564739 新版 registry v2对镜像存储格式进行了重新设计,并且和旧版还不兼容. ...

  4. Docker 搭建本地Registry

    Docker已经将Registry开源,Registry本身也是一个容器. 1. 修改配置/etc/docker/daemon.json,去掉docker默认的https的访问   里面的内容是一个j ...

  5. 通过ISO镜像简单搭建本地yum仓库

    本文参考链接:https://segmentfault.com/a/1190000015155966 *有时候在我们本地搭建一些Linux上的程序运行环境或者安装一些软件的时候,难免会遇到需要使用yu ...

  6. 第 3 章 镜像 - 019 - 使用公共 Registry

    保存和分发镜像的最直接方法就是使用 Docker Hub.https://hub.docker.com/ Docker Hub 是 Docker 公司维护的公共 Registry.用户可以将自己的镜像 ...

  7. docker搭建本地registry

    第一步:拉取registry镜像 [root@localhost iso]# docker image pull registry Using default tag: latest latest: ...

  8. OpenWRT镜像爬虫搭建本地源

    网上的爬虫不能用,还是先表达谢意,不过我比较懒不喜欢重复写别人写的教程,只贴出修改,怎么用自己看教程吧. 我自己改了一版可以正常爬: #!/usr/bin/env python #coding=utf ...

  9. Ubuntu 搭建docker registry 私有仓库

    一.为什么要搭建 docker 私有仓库 原因有几个: 项目需要,不希望将项目放到 docker hub 上. 环境需求,考虑网络.效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度. ...

随机推荐

  1. Spring Boot中注入配置文件application.properties中的list 对象参数

    例如要注入下列参数: dyn.spring.datasources[0].name=branchtadyn.spring.datasources[0].driverClassName=oracle.j ...

  2. maven-shade-plugin插件

    maven-shade-plugin主要是maven-assembly-plugin的后继者,用来将一个自启动jar项目的依赖打包到一个大的jar中,比如dubbo就是这么做的.具体可参考http:/ ...

  3. es修改数据类型

    环境:es版本:6.5.0 es创建好了mapping后是不允许修改字段类型的,要是我们想修改字段类型怎么办呢,我们可以采用reindex的方法实现,就是创建一个新的mapping,里面的字段类型按照 ...

  4. 树之105 Construct Binary Tree from Preorder and Inorder Traversal

    题目链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 参考链 ...

  5. NetworkExtension

    一, 按照网上的方法: iOS 无法获取 WiFi 列表?一定是因为你不知道这个框架 提交了申请.两个小时候后苹果回应邮件.意思就是如果只是使用 App Proxy, Content Filter, ...

  6. Logger级别和输出的地方

    转载自http://blog.csdn.net/u014756827/article/details/52475990 log4j日志配置 关键字: apache log4j 1.配置根Logger: ...

  7. P2120 [ZJOI2007]仓库建设(dp+斜率优化)

    思路 首先暴力DP显然,可以得20分 加上一个前缀和优化,可以得到40分 然后上斜率优化 设\(sum_i\)为\(\sum_{1}^iP_i\),\(sump_i\)为\(\sum_{1}^{i}P ...

  8. facebook api之基本概念(中文)

    Facebook广告API系列 1 Facebook Graph API Facebook提供了一套类rest的接口,统称为Graph API.为啥叫Graph?因为facebook把所有的资源都抽象 ...

  9. 浅谈 Make 命令

    代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目.但是实际上 , ...

  10. Linux 下上手 STC89C52RC

    第一次接触单片机,自然选择了简单的51单片机.然而我的操作系统是 Linux .在 Windows 下上手51似乎很容易.但是 Linux 上搭建 51 开发环境不是很顺. 那么谈谈 Linux 我如 ...