使用Registry搭建Docker私有仓库及验证
思韵闪耀
2020-10-16
0

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

linuxidc@linuxidc~ $ 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
然后查看以下本地的镜像,

linuxidc@linuxidc~ $ 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到我们的私有仓库中,

linuxidc@linuxidc~ $ 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镜像,

linuxidc@linuxidc~ $ 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
linuxidc@linuxidc~ $ 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)


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

要在 Alibaba Cl...
要在 Alibaba Cloud Linux 上安装 Docker...
2025-07-22
要在 Alibaba Cl...
要在 Alibaba Cloud Linux 系统中添加 alin...
2025-07-22
解决Please make...
解决Please make sure you have the c...
2025-03-17
Linux系统挂载未分配硬...
先查看未挂载之前的磁盘使用情况发现磁盘使用率已经达到了96%,迫切...
2025-02-22
Linux lsblk 命...
简介Linux 中的 lsblk 命令,全称叫做:list blo...
2025-02-22
linux内核5和6区别
Linux内核5.x和6.x版本之间有显著的区别,这些区别主要体现...
2024-04-29

热门资讯

docker的daemon.j... docker的daemon.json文件以及key,json文件的作用 1.静态的镜像文件转为动态容...
使用docker部署社区版on... 操作系统: centos7 3.10.0-514.26.2.el7.x86_64 docker版本:...
修改Docker config... 修改Docker config文件的坑 有一个容器之前只开了一个端口,现在要多开一个端口。 首先关闭...
Windows Server ... 一、 打开windows PowerShell,输入以下命令进行安装Docker 1)安装onege...
windows10 彻底卸载 ... 删除docker程序 记事本新建脚本文件 a.ps1,内容如下: $ErrorActionPrefe...
使用Docker部署ONLYO... 推荐服务器配置 RAM : 4 GB+ CPU : 双核 2 GHz + Swap : 至少2 GB...
Winserver 2019 ... 引言 :对于 在winserver 2019上安装docker ,官方有说明,网上也有教程,但是大部...
如何查看一个docker镜像有... 如何查看一个docker镜像有哪些版本 如何查看一个docker镜像有哪些版本 要想查看镜像的版本和...
查看已下载的Docker镜像l... 命令格式:docker image inspect (docker image名称):latest|...
seafile6.1.1部署o... seafile6.1.1部署onlyoffice后中文乱码解决办法 首先感谢cool_ccr,按这个...