详解Docker私有仓库Registry的搭建验证

1. 关于Registry

官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。

Registry在github上有两份代码:老代码库新代码库。老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发。从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pull和push镜像的效率。

官方在Docker hub上提供了registry的镜像(详情),我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。Tag为latest的registry镜像是0.9.1版本的,我们直接采用2.1.1版本。

 2. Registry的部署

运行下面命令获取registry镜像,

$ sudo docker pull registry:2.1.1

然后启动一个容器,

代码如下:

$ sudo docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.1.1

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

运行docker ps看一下容器情况,

lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
f3766397a458    registry:2.1.1   "/bin/registry /etc/d"  46 seconds ago   Up 45 seconds    0.0.0.0:5000->5000/tcp  registry

说明我们已经启动了registry服务,打开浏览器输入http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常,

3. 验证

现在我们通过将镜像push到registry来验证一下。

我的机器上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库,

$ sudo docker tag hello-world 127.0.0.1:5000/hello-world

然后查看以下本地的镜像,

lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker images
REPOSITORY          TAG         IMAGE ID      CREATED       VIRTUAL SIZE
registry           2.1.1        b91f745cd233    5 days ago     220.1 MB
ubuntu            14.04        a5a467fddcb8    6 days ago     187.9 MB
hello-world         latest       975b84d108f1    2 weeks ago     960 B
127.0.0.1:5000/hello-world  latest       975b84d108f1    2 weeks ago     960 B

接下来,我们运行docker push将hello-world镜像push到我们的私有仓库中,

lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker push 127.0.0.1:5000/hello-world
The push refers to a repository [127.0.0.1:5000/hello-world] (len: 1)
975b84d108f1: Image successfully pushed
3f12c794407e: Image successfully pushed
latest: digest: sha256:1c7adb1ac65df0bebb40cd4a84533f787148b102684b74cb27a1982967008e4b size: 2744

现在我们可以查看我们本地/opt/registry目录下已经有了刚推送上来的hello-world。我们也在浏览器中输入http://127.0.0.1:5000/v2/_catalog,如下图所示,

现在我们可以先将我们本地的127.0.0.1:5000/hello-world和hello-world先删除掉,

$ sudo docker rmi hello-world
$ sudo docker rmi 127.0.0.1:5000/hello-world

然后使用docker pull从我们的私有仓库中获取hello-world镜像,

lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker pull 127.0.0.1:5000/hello-world
Using default tag: latest
latest: Pulling from hello-world
b901d36b6f2f: Pull complete
0a6ba66e537a: Pull complete
Digest: sha256:1c7adb1ac65df0bebb40cd4a84533f787148b102684b74cb27a1982967008e4b
Status: Downloaded newer image for 127.0.0.1:5000/hello-world:latest
lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker images
REPOSITORY          TAG         IMAGE ID      CREATED       VIRTUAL SIZE
registry           2.1.1        b91f745cd233    5 days ago     220.1 MB
ubuntu            14.04        a5a467fddcb8    6 days ago     187.9 MB
127.0.0.1:5000/hello-world  latest       0a6ba66e537a    2 weeks ago     960 B

4. 可能问题

可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的配置文件/etc/default/docker,添加下面的内容,

DOCKER_OPTS="--insecure-registry xxx.xxx.xxx.xxx:5000"

然后重启docker后台进程,

$ sudo service docker restart

这是再push即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • docker registry安装简单命令实现

    本文计划使用3条命令来运行一个Docker registry私服,其实很简单 环境准备: docker 1.11.2 compose文件docker-compose.yml version: '2' services: registry: image: registry:2.5.1 hostname: registry ports: - "5000:5000" environment: - TZ="Asia/Shanghai" - "REGISTRY_AU

  • 详解Docker Registry之删除镜像、垃圾回收

    Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据.在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据.本文对这一特性进行了体验,具体步骤如下. 1.部署镜像仓库 (1)启动仓库容器 复制代码 代码如下: dockerrun -d -v /home/config.yml:/etc/docker/registry/config.yml -p 4000:5000 --nametest_registryregistry:

  • 使用Docker registry镜像创建私有仓库的方法

    安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境,本文记录简单的搭建过程. 1 使用registry启动私有仓库的容器 docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry 说明:若之前没有安装registry容器则会自动下载并启动一个registry容器,创建本地的私有仓库服务.默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过 -v 参数来将

  • 搭建一个私有的Docker registry教程

    为什么需要搭建一个私有的registry呢?嗯,对于新手来说,Docker Hub(一个Docker公共仓库)只允许你拥有一个免费的私有版本库(repo).其他的公司也开始提供类似服务,但是价格可不便宜.另外,如果你需要用Docker部署一个用于生产环境的应用,恐怕你不希望将这些镜像放在公开的Docker Hub上吧! 这篇文章提供了一个非常务实的方法来处理搭建私有Docker registry时出现的各种错综复杂的情况.我们将会使用一个运行于DigitalOcean(之后简称为DO)的非常小巧

  • Docker Registry 私有仓库搭建详细步骤

    Docker  Registry 私有仓库搭建 官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了.如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具. 本次搭建 docker-registry server (dev) (v0.9.0) 添加docker用户和目录 为了安全起见,我们可以添加一个用户doc

  • docker-registry使用笔记

    相关链接 github:https://github.com/dotcloud/docker-registry api:http://docs.docker.com/reference/api/registry_api/ 安装docker-registry 官方直接给出了一个创建container的命令,在装有docker的机器上运行docker run -d -p 5000:5000 registry, 这个貌似要下载很多东西,大概500M左右,免去了手工安装的过程,很方便. 安装安成之后直接

  • 详解Docker私有仓库Registry的搭建验证

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像.这个可以通过开源软件Registry来达成目的. Registry在github上有两份代码:老代码库和新代码库.老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发.从2.0版本开始就到

  • 详解Docker私有仓库最简便的搭建方法

    Doker 在业界的应用越来越广泛,怎么用户管理好自己的镜像.容器等就是一个迫在眉睫的任务. 由于业务需要,我们需要在搭建一套自己的 Docker 私有镜像仓库,网上找了很多,都是说要 pull 一个 regisitry 镜像,然后通过这个镜像启动一个容器来运行仓库应用,我按照官网的说明 pull 了一个 registry ,但是启动的时候有报错,具体是什么就不细说了,反正是有错,于是开始研究别的方法,别说还真找到了一个,而且是我发现的最简便的办法,我不知道我是不是国内第一个发现的,但我应该是第

  • Docker私有仓库Registry部署的实现

    随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库.目前常用的两种仓库:公共仓库和私有仓库.最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要注册的. 私有仓库最常用的就是Registry.Harbor两种,那接下来详细介绍如何搭建registry私有仓库,Harbor将在下一篇博文部署. 一.部署Registry私有仓库 案例描述 两台CentOS7.4,一台为Docker私有仓库:另一台为Docker客户端,测试使用: 两台服务器

  • 详解docker私有仓库搭建与使用实战

    hub.docker.com上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案,今天我们就来实战搭建私有docker仓库吧: 环境规划 需要两台机器:docker私服仓库的server和使用docker的普通机器,这两个机器都是ubuntu16版本的server,ip信息如下: 机器名 ip 功能 docker-registry 192.168.119.148 docker私有仓库服务器 docker-app 192.168.119.155 运行docker服务的

  • Docker 私有仓库恢复实例详解

    Docker 私有仓库恢复 之前openstack平台由于停电等影响,导致之前制作的registry 私有仓库的主机挂掉,还好数据挂载在nfs中,然后现在尝试重新启动恢复. 虚机安装nfs服务 apt-get install -y nfs-common 编辑 /etc/fstab 写入远程挂载地址 10.50.8.12:/export/DockerRepo   /var/lib/docker/registry      nfs    defaults        0 0 然后进行挂载: mou

  • 一文教会你如何高效地搭建Docker私有仓库

    目录 前言 1. 私有仓库 2. 搭建私有仓库 环境部署 自建仓库 3. 使用 TLS 证书 生成证书 基本身份验证 4. Nginx 反向代理仓库 5. 可视化私有仓库 总结 前言 Docker 仓库用于保存 Docker 镜像,分为公有仓库与私有仓库. 公有仓库就是 Docker Hub 一类供所有 Docker 用户使用的 Docker 仓库. 私有仓库是指由个人或企业搭建的 Docker 仓库,供其自身使用,是非公开的. 本篇文章将对 Docker 私有仓库及其相关内容进行详解. 1.

  • Harbor搭建Docker私有仓库的实现方法

    1 开源的仓库管理工具Harbor Harbor是一个由CNCF托管的开源的Docker镜像仓库管理工具,我们可以通过它快速的建立起自己的私有仓库.当然,搭建私有仓库的选择很多,如Docker官方提供的registry镜像或者Nexus等.但Harbor不失为一种不错的选择. 2 安装 Harbor的安装方式也很多,如通过命令行安装.Helm安装等,本文演示通过命令行的脚本安装. 2.1 安装Docker和Docker-compose 首先Docker是要安装的,Harbor是通过一堆容器来启动

  • docker-compose快速搭建docker私有仓库的步骤

    创建docker-compose.yml并填入如下内容 version: '3' services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/registry.crt REGISTRY_HTTP_TLS_KEY: /certs/registry.key REGISTRY_AUTH: htpasswd REGIS

  • 如何搭建配置Docker私有仓库的实现步骤

    目录 前言 ️ 1.Docker容器三要素 ️ 2.本地私有仓库搭建 2.1 拉取私有仓库镜像 2.2 启动私有仓库容器 2.3 设置信任 2.4 上传本地镜像 2.5 重新拉取镜像 ️ 3.网络私有仓库搭建 3.1 选择实例 3.2 创建命名空间 3.3 创建镜像仓库 3.4 上传镜像 3.5 镜像日常维护管理 前言 搭建docker私有仓库,可以实现一个镜像,多次使用,镜像下载速度快等好处 ️ 1.Docker容器三要素 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Ap

  • docker 查询或获取私有仓库(registry)中的镜像的方法

    docker 查询或获取私有仓库(registry)中的镜像,使用 docker search 192.168.1.8:5000 命令经测试不好使. 解决: 1.获取仓库类的镜像: [root@shanghai docker]# curl -XGEThttp://192.168.1.8:5000/v2/_catalog {"repositories":["nginx"]} 2.获取某个镜像的标签列表: [root@shanghai docker]# curl -XG

随机推荐