Docker官方的Docker hub尽管提供了有非常多image,也基本上包括了我们须要使用的,可是其訪问起来比較慢。假设自己要定制image。多台server之间的共享使用此image非常不方便。这个时候我们就迫切须要一个本地的私有仓库了。

以下的图说明了Docker私有仓库的作用。

Docker私有仓库能够通过docker-registry项目来实现,通过http服务来上传下载。docker-registry在Docker hub上已有现成的image。

  $ docker search registry

选择第1个。将其从Docker hub上down下来(最好带tag,不然会将全部的tag都down下来)。

  $ docker pull registry

这个下载的过程有点长,耐心等待一下。O(∩_∩)O哈哈~。

  $ docker images

registry镜像下下来后。通过以下的命令启动,并将registry的容器存储images的文件夹映射到宿主server的/opt/docker/registry文件夹。

  $ docker run -d -p 5000:5000 -v /opt/docker/registry:/tmp/registry registry

启动以后在浏览器中输入http://主机IP:5000或者http://主机IP:5000/v1/search。假设有显示就说明Docker私有仓库已经建好了。下一步将本地的images
push到Docker私有仓库。

现将本地的image打一个tag,新image名称必须带有"主机IP:5000"。例如以下(我这里用127.0.0.1仅仅是举例)。

REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry latest 5562556b14f9 8 days ago 422.9 MB
127.0.0.1:5000/registry  latest              5562556b14f9        8 days ago          422.9 MB

假设缺少上面这一步。直接push image,会出现例如以下错误。

[docker@docker1 ~]$ docker push registry
The push refers to a repository [registry] (len: 1)
Sending image list
2014/10/27 15:48:25 Error: Status 403 trying to push repository registry: Account is not Active

运行例如以下push命令后。能够在http://主机IP:5000/v1/search看到存储到Docker私有仓库的信息。

  $ docker push 127.0.0.1:5000/registry

下次能够通过pull命令下载到其它server上,那可就快多了。

pull的时候记得带"主机IP:5000",不然还是去Docker hub上下载而不是私有仓库下载,例如以下命令。

  $ docker pull 127.0.0.1:5000/registry

到此。私有仓库存取image就能够了。

假设是save/load的image。会出现以下的错误。对于这种image。最好又一次build对应的Dockerfile。

[docker@docker1 ~] $docker push 127.0.0.1:5000/nexus
The push refers to a repository [127.0.0.1:5000/nexus] (len: 1)
Sending image list
Pushing repository 127.0.0.1:5000/nexus (1 tags) 2014/10/27 14:50:37 HTTP code 400 while uploading metadata: {"error": "Missing key `id' in JSON"}

docker1.3.0以后的版本号。增加了认证机制,docker pull & push会报例如以下错误:

[docker@docker1 ~]$ docker push 127.0.0.1:5000/registry
2014/12/02 11:33:04 Error: Invalid registry endpoint https://127.0.0.1:5000/v1/: Get https://127.0.0.1:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 127.0.0.1:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/127.0.0.1:5000/ca.crt

使用registry的server和client启动docker时都须要加上"--insecure-registry"參数,pull和push才可正常操作。例如以下命令(ip都是registry所在server的ip地址)。

[docker@docker1 ~]$ service docker stop
[docker@docker1 ~]$ nohup docker -H unix:///var/run/docker.sock --insecure-registry 127.0.0.1:5000 -d &


docker创建私有仓库及存储image的更多相关文章

  1. docker创建私有仓库

    由于网速和大中华局域网效果,使得我们在DockerHub下载镜像的速度很慢,甚至一些国内的镜像仓库,也感觉速度不是很好.所以,很有必要在本地或者一个我们访问很快速的地方(自己的云服务器)搭建一套镜像仓 ...

  2. 转 docker创建私有仓库和k8s中使用私有镜像

    docker私有仓库建立 环境说明我们选取192.168.5.2做私有仓库地址yum install docker -y1.启动docker仓库端口服务 docker run -d -p 5000:5 ...

  3. docker 创建私有仓库

    由于国内访问国际网络缓慢,从DockerHub下载镜像的速度感人,所以我们有必要在本地或者自己的云服务器上搭建一套镜像仓库,提高容器下载速度使用私有仓库需修改地址:Centos 7 Docker配置: ...

  4. Docker学习总结之docker创建私有仓库(private Repositories)

    Docker 创建 Private Repositories 前言 基于GFW的缘故,国内大陆基本无法pull国外的镜像,更别说官方的index了.如果images无法pull下来,那么docker就 ...

  5. docker基础——自定义镜像、创建私有仓库、查看 docker 运行状态

    一.自定义镜像 1,案例1 要求:请自定义一个 docker 镜像,基于 hub.c.163.com/library/centos,要求创建出来的镜像在生成容器的时候,可以直接使用 ifconfig ...

  6. 部署Nexus作为docker的私有仓库

    目录 Docker搭建Nexus私有仓库... 1 一.安装部署... 1 1.安装... 2 2.访问网页端... 2 二.配置使用... 2 1.创建本地仓库... 2 2.docker配置... ...

  7. Docker Harbor私有仓库部署与管理 (超详细配图)

    Docker Harbor私有仓库部署与管理 1.Harbor 介绍 2.Harbor部署 3.Harbor管理 1.Harbor 介绍: 什么是 Harbor ? Harbor 是 VMware 公 ...

  8. Docker 搭建私有仓库

    Docker 搭建私有仓库 环境: docker 版本 :18.09.1 主机地址:192.168.1.79 1.运行并创建私有仓库 docker run -d \ -v /opt/registry: ...

  9. [Docker]docker搭建私有仓库(ssl、身份认证)

    docker搭建私有仓库(ssl.身份认证) 环境:CentOS 7.Docker 1.13.1 CentOS 7相关: https://www.cnblogs.com/ttkl/p/11041124 ...

随机推荐

  1. Python的生成器Generator小结

    一. 生成器的介绍 在介绍生成器(Generator)之前,我们首先需要熟悉列表生成式,列表生成式是Python内置的简单又强大的用来创建列表的生成式. 举个例子, 如果我们想生成[1*1,2*2,3 ...

  2. JAVA使用JDBC连接MySQL数据库 一

    public class JDBCTest { public static void main(String[] args){ String driver = "com.mysql.jdbc ...

  3. POJ 3686 The Windy's(思维+费用流好题)

    The Windy's Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5362   Accepted: 2249 Descr ...

  4. [LOJ#2326]「清华集训 2017」简单数据结构

    [LOJ#2326]「清华集训 2017」简单数据结构 试题描述 参加完IOI2018之后就是姚班面试.而你,由于讨厌物理.并且想成为乔布斯一样的创业家,被成功踢回贵系. 转眼,时间的指针被指向201 ...

  5. Django使用js,css等静态文件的时候,出现mime类型问题

    使用adminLTE模板, return render(request, 'AdminLTE/index.html') 的时候报如下错误且页面渲染异常,css没有效果: Resource interp ...

  6. Java EE 学习(1):什么是Java EE

    转载: http://www.jb51.net/article/13059.htm 经常听朋友说什么J2EE,终于知道点什么是J2EE了,汗一个,上网搜了下这个说的比较详细了,J2EE,Java2平台 ...

  7. nodeJS学习(8)--- WS/...开发 NodeJS 项目-节3 <使用 mongodb 完整实例过程>

    使用 mongodb 的小系统 参考:https://my.oschina.net/chenhao901007/blog/312367 1. Robomongo 创建项目的数据库和数据表 参考:htt ...

  8. 【22】Vue 之 Vue Devtools

    vue安装: # 最新稳定版 $ npm install vue # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新 ...

  9. MYSQL 存储过程 多表更新异常捕捉和异常处理方式

    今天在做MYSQL 存储过程 多表更新的功能   多表更新时候注意事项 1.首先是确保多表更新能够一次执行,途中没有哪个表的sql语句错误 2.上线后修改表结构及字段,请注意检查是否影响mysql 过 ...

  10. input输入框与元素间有间隙

    <div class="container"> <button>1</button> <button>2</button> ...