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

 更新时间:2017年05月02日 09:19:31   作者:lienhua34  
这篇文章主要介绍了详解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即可。

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

相关文章

  • Docker服务迁移的实现

    Docker服务迁移的实现

    本文详细介绍了如何备份和迁移Docker服务数据,包括停止Docker服务、备份Docker数据和DockerCompose文件,使用SCP或Rsync传输备份文件,以及在新服务器上恢复Docker数据和设置权限,文中提供了详细的命令和步骤,确保数据迁移过程顺利进行
    2024-10-10
  • 基于Docker+Selenium Grid的测试技术应用示例代码

    基于Docker+Selenium Grid的测试技术应用示例代码

    Selenium Grid允许我们在多台计算机上并行运行测试,并集中管理不同的浏览器版本和浏览器配置。这篇文章给大家介绍基于Docker+Selenium Grid的测试技术应用示例代码,需要的朋友参考下吧
    2021-08-08
  • Docker常见的错误和异常整理大全

    Docker常见的错误和异常整理大全

    这篇文章主要给大家介绍了关于Docker常见的错误和异常整理的相关资料,文中通过代码示例介绍的非常详细,对新手们学习Docker具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Docker基础命令详解

    Docker基础命令详解

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。本文给大家分享docker基础命令,感兴趣的朋友一起看看吧
    2016-10-10
  • 使用Docker部署MySQL数据库的两种方法

    使用Docker部署MySQL数据库的两种方法

    在现代软件开发中,MySQL 是一种流行的关系数据库管理系统,因其可靠性和易用性受到广泛欢迎,通过 Docker,可以快速、便捷地部署和管理 MySQL 数据库实例,本文将介绍两种通过 Docker 部署 MySQL 的方法,需要的朋友可以参考下
    2024-10-10
  • Docker拉取容器镜像超时的问题解决办法

    Docker拉取容器镜像超时的问题解决办法

    这篇文章主要介绍了Docker拉取容器镜像超时问题的解决办法,解决方法包括配置Docker镜像加速器、设置代理、通过中介设备传送镜像等,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • Docker可视化工具Portainer的具体使用

    Docker可视化工具Portainer的具体使用

    Portainer是Docker的可视化工具,可提供一个交互界面显示Docker的详细信息供用户操作,本文主要介绍了Docker可视化工具Portainer的具体使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Docker安装ollama过程解读

    Docker安装ollama过程解读

    Ollama是一个开源的LLM服务工具,用于简化在本地运行大语言模型,本文介绍了如何使用Docker安装Ollama并运行大语言模型,包括拉取镜像、运行容器和加载模型,最后,还介绍了如何安装OpenWebUI进行Web界面交互
    2025-02-02
  • Docker Consul概述以及集群环境搭建步骤(图文详解)

    Docker Consul概述以及集群环境搭建步骤(图文详解)

    本文主要介绍了Docker-Consul概述以及集群环境搭建步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Docker安装Nginx问题及错误分析

    Docker安装Nginx问题及错误分析

    这篇文章主要介绍了Docker安装Nginx的问题及错误分析正确的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论