我们知道可以使用hub.docker.com作为我们公共或者私有的registry。但由于服务器在国外的原因,网速会非常的慢。
所以我们在利用docker开发构建容器服务时,我们希望能够建立自己的私有registry,上传镜像值我们的私有registry中心,然后在其他物理机上部署的时候,可以快速的pull,然后实现大规模的分发以及部署,提高效率。
下面将会说一下如何通过registry容器实现这个

环境:centos7.0,  docker1.13.1版本

docker1.12版本以后,docker的可执行文件从/usr/bin/docker变成了/ussr/bin/dockerd,每一个版本在不同的环境下,dockerd的daemon都是不同的配置,具体的要根据docker官网的指导进行配置。我们在网上可以看到很多关于如何配置docker的daemon启动参数教程,以及一些出现的问题,其实大部分都是讲的比较乱的,或者不根据自己的实际系统和docker版本去确定如何配置的,因为不同的系统版本和docker版本具体的opts的选项是不同的,这个配置的文件的位置也是不一样的,如果没清楚整个区别,就跟着网上的改来改去,最后配置还是没能生效。

(1)无认证的registry
在环境中,dockerd的配置文件在/etc/docker/daemon.json中,如果没有该文件,可以手动创建。

第一步:pull docker官方的registry的第二个版本,docker1.6版本以上支持registry2
docker pull registry:2.6.0

或者docker pull registry 不指定版本,表示latest版本

第二步:配置daemon.json,去掉docker默认的https的访问
vim /etc/docker/daemon.json
里面的内容是一个json对象,加上一项insecure-registries,地址自己更改:
{
"insecure-registries":["192.168.1.78:5000"]
}

然后重启docker,执行
systemctl daemon-reload docker
systemctl restart docker

第三步:无认证启动registry容器
docker run -d --name registry -p 5000:5000 --restart=always -v /opt/registry/:/var/lib/registry/ registry:2.6.0
上传到私有镜像的镜像到时是默认存放在容器的/var/lib/registry/,为了防止删除registry,上传的镜像也被删除,所以启用一个volume,将上传的镜像持久化保存在我们物理机上,这里保存位置是/opt/registry/

第四步:测试是否启动容器
curl http://192.168.1.78:5000/v2/_catalog

如果返回{"repositories":[]},代表启动成功了!

第五步:测试上传到我们自己的私有registry
将nginx这个镜像重命名tag
docker tag nginx 192.168.1.78:5000/mynginx
这里需要注意的是重命名的tag必须带有建立192.168.1.78:5000/这个前缀,后面的mynginx是新镜像名。
然后开始进行push到我们建立的私有registry
docker push 192.168.1.78:5000/mynginx
再通过运行
curl http://192.168.1.78:5000/v2/_catalog
可以看到返回{"repositories":["mynginx"]}
说明已经push到了自己的registry

第六步:测试pull
同样还是在本机上进行pull
首先删除本机存在的镜像192.168.1.78:5000/mynginx(刚才通过tag重命名的)
docker rmi 192.168.1.78:5000/mynginx
然后
docker images
可以看到已经没有了192.168.1.78:5000/mynginx这个镜像
下面开始pull这个镜像
docker pull 192.168.1.78:5000/mynginx
然后再看
docker images
可以看到出现这个192.168.1.78:5000/mynginx
说明pull成功了

第七步:在其他的物理机上pull这个镜像
同样需要在安装docker,然后再/etc/docker/daemon.json这个文件中
添加insecure-registries,ip地址自己更改:
{
"insecure-registries":["192.168.1.78:5000"]
}
然后重启docker,执行
ststemctl daemon-reload docker
systemctl restart docker
docker pull 192.168.1.78:5000/mynginx 
这样子就可以从自己的registry拉取镜像了,当然也可以上传镜像
假如有一个mynginx:1.1
docker tag 192.168.1.78:5000/mynginx 192.168.1.78:5000/mynginx:1.1
docker push 192.168.1.78:5000/mynginx:1.1
其实192.168.1.78:5000/这个就是建立的私有registry的地址

无认证的registry已经完成了,特别在局域网内部开发或者线上部署时非常有用!

下一节将会总结一下关于认证模式的registry,欢迎留意!

docker-建立私有registry的更多相关文章

  1. docker搭建私有registry

    搭建docker的私有registry 1.   registry简介 Docker在2015年推出了distribution项目,即Docker Registry 2.相比于old registry ...

  2. Docker建立本地Registry

    从容器运行一个Registry # docker run -p : registry 查看yelinyuntest/static_web镜像 # docker images yelinyuntest/ ...

  3. docker 建立私有仓库,24.205为镜像仓库所在主机

    一.下载registry #yum install -y python-devel libevent-devel python-pip gcc xz-devel #python-pip install ...

  4. [docker]搭建私有registry

    导入导出镜像比较麻烦,共享镜像占了工作中一大部分时间. 搭建了个本地registry, 不支持用户名密码验证的 和 支持用户名密码验证的两种. 参考: https://docs.docker.com/ ...

  5. 为docker私有registry配置nginx反向代理

    公司的Docker私有registry已经搭建好了,用官方的registry image很容易就搭建好了.现在就是要用nginx的反向代理把它放出来,以便在外网可以访问. 我的上一篇blog 讲了如何 ...

  6. Docker:私有仓库registry [十一]

    一.运行docker私有仓库 安装registry docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregi ...

  7. 9、Docker私有registry

    Docker Registry分类 Docker 默认是使用https的,但是如果在自己得私有局域网中,你指明使用http也是可以的. Registry主要的作用是托管镜像: 运行docker reg ...

  8. Docker 私有registry出现的证书问题

    在上一篇 最近搭建的私有registry里,参考的文章指出,在push时可能出现问题: 可能会出现无法push镜像到私有仓库的问题.这是因为我们启动的registry服务不是安全可信赖的.这是我们需要 ...

  9. docker 私有registry 配置

    备注:此处使用linux镜像配置仓库 registry 启动步骤 https://hub.docker.com/_/registry/ docker login docker pull registr ...

  10. docker网络 存储卷 Dockerfile 私有registry

    1.bridge模式 docker run --name bu1 -it --network bridge --rm busybox # 相当于 docker run --name bu1 -it - ...

随机推荐

  1. json.dumps(i['bd_res'], ensure_ascii=False)

    json.dumps(i['bd_res'], ensure_ascii=False) import xlrd import time import sys import os import requ ...

  2. 【python】-- 类的继承(新式类/经典类)、多态

    继承 之前我们说到了类的公有属性和类的私有属性,其实就是类的封装,现在准备随笔的 是继承,是面向对象的第二大特性. 面向对象编程 (OOP) 语言的一个主要功能就是“继承”.继承是指这样一种能力:它可 ...

  3. 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现

    我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...

  4. pinpoint-dubbo插件兼容泛化调用

    背景 dubbo插件中需要记录当前调用的接口和方法,但是在泛化调用的场景下,记录的接口和方法都变成了 com.alibaba.dubbo.rpc.service.GenericService:$inv ...

  5. DOM指针

    dom节点改变 会自动改变节点的指针 child = formula.firstChild while(child){ next = child.nextSibling; formula.remove ...

  6. 在Nginx中做负载均衡配置的实例讲解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法. 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某 ...

  7. 关于用JAVA开发短信方面的知识

      现在流行的网络业务莫过于短信了.网易新浪等都因此而盈利,股价上涨.我凭自己的经验和公司支持,也就乘着东风来研究一下了! 首先,你要选择一台移动或者联通的短信服务器做你们的发送短信接口.这是最关键的 ...

  8. 每天一个Linux命令(29)du命令

        du命令是对文件和目录磁盘使用的空间的查看.     (1)用法:     用法:  du  [选项]  [文件]     (2)功能:     功能:  报告磁盘空间使用情况     (3) ...

  9. Render树、RenderObject与RenderLayer

    Chapter: 呈现树的构建 1. 呈现树与CSS盒子模型千丝万缕的关系 2. 呈现树与DOM树的关系 3. 浏览器构建呈现树的流程 4. Firefox的规则树和样式上下文树 5. 规则树是如何解 ...

  10. MyBatis入门级Demo

    1.创建Java工程MyBatisTest001,导入jar包(mybatis-3.2.1/mysql-connector-java-5.1.24-bin); 2.创建User表,数据库(MySql) ...