`
m635674608
  • 浏览: 5043888 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Docker学习笔记 — Docker私有仓库搭建

 
阅读更多

和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。

使用私有仓库有许多优点:

  1. 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
  2. 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

接下来我们就大致说一下如何在本地搭建私有仓库。

目前Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。此文档是在v1的基础上写的,如果需要安装registry v2,只需下载registry:2.2即可,或者可以下载后面的安装脚本运行安装。


环境准备

环境:两个装有Docker的Ubuntu虚拟机 
虚拟机一:192.168.112.132 用户开发机 
虚拟机二:192.168.112.136 用作私有仓库

此处我们准备了两个虚拟机,分别都安装了Docker,其中132机器用作开发机,136机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。


搭建私有仓库

首先在136机器上下载registry镜像

$ sudo docker pull registry

下载完之后我们通过该镜像启动一个容器

$ sudo docker run -d -p 5000:5000 registry

默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:

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

这里写图片描述

可以看到我们启动了一个容器,地址为:192.168.112.136:5000。


测试

接下来我们就要操作把一个本地镜像push到私有仓库中。首先在132机器下pull一个比较小的镜像来测试(此处使用的是busybox)。

$ sudo docker pull busybox

这里写图片描述

接下来修改一下该镜像的tag。

$ sudo docker tag busybox 192.168.112.136:5000/busybox

这里写图片描述

接下来把打了tag的镜像上传到私有仓库。

$ sudo docker push 192.168.112.136:5000/busybox

这里写图片描述

可以看到push失败,具体错误如下:

2015/01/05 11:01:17 Error: Invalid registry endpoint https://192.168.112.136:5000/v1/: Get https://192.168.112.136:5000/v1/_ping: dial tcp 192.168.112.136:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136: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/192.168.112.136:5000/ca.crt 
  • 1
  • 1

因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改132机器的配置)Ubuntu下配置文件地址为:/etc/init/docker.conf,在其中增加–insecure-registry 192.168.112.136:5000如下所示:

$ sudo vi /etc/init/docker.conf

这里写图片描述

修改完之后,重启Docker服务。

$ sudo restart docker

这里写图片描述

重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。

$ sudo docker push 192.168.112.136:5000/busybox

这里写图片描述

可以看到镜像已经push到私有仓库中去了。

接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像。

$ sudo docker pull 192.168.112.136:5000/busybox

这里写图片描述

到此就搭建好了Docker私有仓库。上面搭建的仓库是不需要认证的,我们可以结合nginx和https实现认证和加密功能。

管理仓库中的镜像


查询

如果我们想要查询私有仓库中的所有镜像,使用docker search命令:

# docker search registry_ip:5000/

如果要查询仓库中指定账户下的镜像,则使用如下命令:

# docker search registry_ip:5000/account/

同时也可以指定镜像查询。

删除

目前尚未找到方法删除私有仓库中的镜像,尝试过直接从仓库存储目录中删除镜像文件,但是并不能成功删除镜像。

Registry V2


Registry V2.2的安装脚本如下:

#!/bin/bash
# Description: create a private registry v2.2
# Version: 0.2
#
# Author: wangtao 479021795@qq.com
# Date: 2015/10/29

set -o xtrace

if [[ $UID -ne 0 ]]; then
    echo "Not root user. Please run as root."
    exit 0
fi

# Install Docker if not
docker -v
if [[ $? -ne 0 ]]; then
    echo "Please install Docker first."
    exit 0
fi

REGISTRY_VERSION=2.2

# Download registry image v2.2
docker pull registry:${REGISTRY_VERSION}

# Start registry container
mkdir /opt/registry
docker run -d -p 5000:5000 --restart=always -v /opt/registry:/var/lib/registry --name hummer_registry registry:${REGISTRY_VERSION}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

Registry的存放目录在Docker Hub上显示的是/tmp/registry-dev,但是映射之后发现并没有存放在该目录,查看源码发现,镜像信息存放在/var/lib/registry目录下,因此这里修改为将/opt/registry目录映射到/var/lib/registry。

上传镜像

# docker push registry:5000/image_name

查看镜像

# curl -XGET http://registry:5000/v2/_catalog
# curl -XGET http://registry:5000/v2/image_name/tags/list

删除镜像 
虽然看了官方API,但是还是不能成功删除,不知道digest如何生成。如果有知道的同学请不吝赐教。Docker Registry HTTP API V2 
根据网上资料显示,当前版本尚不支持该功能,再等等看新版本吧。

 


转载自:http://blog.csdn.net/u010397369/article/details/42422243

根据自己的实验有所改动。

本来自己之前已经写了一篇关于Docker私有仓库的搭建的文章,但是后来不小心把它给覆盖了,也不想再写一遍了。这篇文章跟我的搭建思路差不多,所以就转载了这篇文章。

添加了Registry v2的安装部分。

 

http://blog.csdn.net/wangtaoking1/article/details/44180901

分享到:
评论

相关推荐

    docker学习笔记V1

    docker自学记录;...Dockers 是有能力打包应用程序及其虚拟容器,可以在任何 Linux 服务器上运行的依赖 性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公有云、 私有云、单机等。

    Docker学习笔记(1)

    包括docker安装以及常用操作、私有仓库安装和使用、制自己的镜像、迁移镜像、操作镜像

    Spring Cloud与Docker整合应用-学习笔记

    本文档记录了SpringCloud的简易框架的搭建、Docker的安装、Nexus3与Docker的整合建立私有仓库及如何上传本地镜像、Dockerfile与Docker Compose的关系以及应用示例等等内容,总之本文档值得下载。

    非常详细的-Docker-学习笔记.docx

    "非常详细的Docker学习笔记" Docker是开源的容器虚拟化平台,主要由两个部分组成:Docker和Docker Hub。Docker是一个容器虚拟化平台,Docker Hub是一个用于分享、管理Docker容器的SaaS平台。Docker使用客户端-...

    详解使用Docker搭建Java Web运行环境

    这周末体验了一下挺火的Docker技术,记录学习笔记。 >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发, 源代码托管在 Github 上, 遵从Apache2.0协议开源。...

    Docker学习笔记之docker入门

    学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器。这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器; 每个容器...

    动力节点Docker入门到进阶教程学习笔记分享

    5.深度讲解了docker distribution、docker registry、harbor私有镜像中心的搭建过程及原理。 6.深度剖析了HTTPS加密验证原理, 7.深度讲解了数字证书、根证书、数据摘要、数字签名等概念与用途。度剖析了Swarm的节点...

    ubuntu服务器上快速部署docker的方法

    最近在学习docker,今天学习了一下ubuntu服务器上快速部署docker,所以,今天添加一点小笔记。 安装curl sudo apt-get install curl 安装docker curl -sSL https://get.daocloud.io/docker | sh 添加非root用户到...

    1456页Linux学习笔记(从入门到进阶).docx

    - **Harbor私有仓库安装**:安装和配置Harbor私有仓库的脚本。 #### 五、修改自动获取IP - **知识点概述**: - **网卡名称修改**:指导用户如何更改Linux系统中的网卡名称。 - **网卡IP配置**:包括配置自动获取...

    Java架构面试专题汇总(含答案)和学习笔记

    这份资源包含了详细的面试问题和答案,以及相关的学习笔记,旨在帮助Java工程师更好地准备面试,提升自身的技术素养。下面,我们将深入探讨其中可能涉及的一些核心知识点。 1. **Java基础** - **内存管理**:包括...

    云计算学习笔记

    这份"云计算学习笔记"涵盖了云计算的基础概念、主要服务模式、关键技术以及应用实例,旨在帮助读者全面理解并掌握这一领域的核心知识。 1. **云计算基础** - **定义**:云计算是一种基于互联网的计算方式,它允许...

    maven私服nexus-2.11.4-01.rar

    通过Nexus,我们可以创建自己的私有仓库,存储和管理组织内部的依赖,同时也可以代理公共的Maven中央仓库,实现离线开发环境。 二、Nexus 2.11.4-01 Nexus 2.11.4-01是Nexus的一个稳定版本,提供了包括Repository ...

    cloud_note:云笔记毕设

    6. 权限控制:通过角色权限管理,实现不同用户对笔记的不同访问权限,如私有笔记、共享笔记等。 三、架构设计 1. 微服务架构:可能采用了微服务架构,将各个业务功能拆分成独立的服务,每个服务都拥有自己的数据库...

    FfDL:深度学习结构(FfDL,发音为fiddle)是一个深度学习平台,在Kubernetes上提供TensorFlow,Caffe,PyTorch等作为服务

    它是用于以下方面的协作平台: 分布式硬件上的深度学习模型的与框架无关的训练开放式深度学习API 在用户的私有或公共云中运行深度学习托管 要了解有关建筑细节的更多信息,请阅读。 如果您正在寻找演示,幻灯片,...

    博客:蓝眼系列软件之《蓝眼博客》开发中..

    蓝眼博客力求小而精,可以作为团队内部或个人私有的博客使用,同时也可作为学习资源使用。如果您觉得蓝眼博客对您有帮助,请不要吝惜您的star :grinning_face_with_smiling_eyes:使用Docker安装蓝眼博客在运行时依赖...

    working-notes:工作技术积累,笔记

    GitHub是一个面向开源及私有软件项目的托管平台,支持版本控制(Git)和协作功能,因此将笔记迁移到GitHub可能意味着作者希望与他人共享和协作,或者利用GitHub的版本控制功能来追踪笔记的修改历史。 由于没有具体...

    2021 H13-531-HCIE-Cloud.rar

    这个压缩包文件很可能是为了帮助备考者准备H13-531考试而提供的学习资源,可能包括了最新的考试大纲、模拟试题、学习笔记、案例分析等资料。 【描述】"华为2021 H13-531-HCIE-Cloud,稳过" 表明该压缩包的内容是...

    云计算.rar

    这份“云计算.rar”压缩包中可能包含的资料,如课件、课堂笔记和课后作业,为我们提供了深入学习和理解云计算的宝贵资源。 云计算的基本概念包括三个层次:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务...

Global site tag (gtag.js) - Google Analytics