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看一下容器情况,

[email protected] ~ $ 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

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

[email protected] ~ $ 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到我们的私有仓库中,

[email protected] ~ $ 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镜像,

[email protected] ~ $ 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
[email protected]-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即可。

(done)

**版本声明:该博文为博主原创,如需转载,请事先征求博主同意。

时间: 2024-07-31 14:35:00

Docker私有仓库Registry的搭建验证的相关文章

Docker私有仓库Registry认证搭建

前言: 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候我们的使用场景需要拥有一个私有的镜像仓库用于管理自己的镜像,这个时候我们就通过Registry来实现此目的.本文详细介绍了本地镜像仓库Docker Registry及Auth Server认证搭建. 集群环境: 系统 主机名 IP地址(Host-Only) 描述 Centos7.2.1511 contr

教你分分钟搞定Docker私有仓库Registry

一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像. 二.安装Docker及Registry 安装Docker见之前博文: http://www.cnblogs.com/Javame/p/5492543.html 安装Regi

(转)教你分分钟搞定Docker私有仓库Registry

转:https://www.cnblogs.com/Javame/p/7389093.html 一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像. 二.安装Docker及Registry 安装Docker见之前博文: htt

Docker私有仓库registry

1.docker私有仓库的搭建与使用    docker不仅有一个中央仓库,同时也允许我们搭建自己的私有仓库,如果读者对maven有了解,将很容易理解私有仓库的优势:    1.节省带宽,镜像无需从中央仓库下载,只需要从私有仓库中下载即可    2.对于私有仓库中已经有的镜像,提升了下载速度    3.便于内部镜像的统一管理2.下面我们来讲解一下如何搭建.使用私有仓库:    1.准备两台安装有docker的Centos7的机器,主机规划如下:        主机         IP     

Docker私有仓库Registry实战

参考: https://www.cnblogs.com/soar1688/p/6828329.html 1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像.这个可以通过开源软件Registry来达成目的. Registry在github上有两份代码:老代码库和新代码库.老代码是采用python编写的,存在pull和p

docker私有仓库registry部署

准备环境:两个装有Docker(版本1.12)的虚拟机虚拟机一:192.168.2.55 用户开发机虚拟机二:192.168.2.10 用作私有仓库 搭建私有仓库 首先在10机器上下载registry镜像 $ docker pull registry 下载完之后我们通过该镜像启动一个容器 $ sudo docker run -d --restart=always -p 5000:5000 -v /export/data/docker/registry:/tmp/registry registry

Docker私有仓库registry+nginx(https)

Docker仓库 仓库(Repository)是集中存放镜像的地方. 一个容易混淆的概念是注册服务器(Registry) .实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像.从这方面来说,仓库可以被认为是一个具体的项目或目录.例如对于仓库地址 docker.sina.com.cn/centos:centos63 来说,docker.sina.com.cn 是注册服务器地址,centos 是仓库名,centos63 是仓库的 tag. Docker Hu

docker 私有仓库之Harbor搭建与使用

Harbor搭建 下载Harbor: wget https://github.com/vmware/harbor/releases/ 配置Harbor tar xvf harbor-online-installer-v1.1.2.tgz cd harbor 修改harbor.cnf内容如下: # 访问管理UI与注册服务的IP地址或主机名,别使用localhost或127.0.0.1,因为Harbor需要被外部的客户端访问. hostname = 10.10.10.11 # 访问UI与token/

Docker私有仓库 Registry中的镜像管理

如何删除私有 registry 中的镜像? 首先,在默认情况下,docker registry 是不允许删除镜像的,需要在配置config.yml中启用:vim /etc/docker/registry/config.yml version: 0.1 log: fields: service: registry storage: delete: enable: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var