【云原生Docker】11-Docker镜像仓库

news/2025/2/12 4:55:20/

【云原生|Docker】11-Docker Registry(官方仓库)

文章目录

  • 【云原生|Docker】11-Docker Registry(官方仓库)
    • 前言
    • docker registry
      • 简介
      • 操作示例
    • hyper/docker-registry-web

前言

​ 前面我们所有的docker操作,使用的镜像都是在docker官方的镜像仓库下载,当然这并不是什么问题。然后再实际工作中我们更加倾向于使用自建的docker仓库,主要是因为方便管控,也能储存自定义的不可公开的镜像。docker官方就给我们提供了私有仓库解决方案。本将主要介绍:docker官方registry

docker registry

简介

  • Docker Registry是一个官方开源的Docker镜像仓库,用于存储和分发Docker镜像。它允许用户将自己的Docker镜像上传到一个中心仓库,以便其他人可以方便地下载和使用这些镜像。
  • Docker Registry有两个主要组件:Registry和Registry API。Registry是一个HTTP服务器,用于存储和检索Docker镜像。Registry API是一个RESTful API,用于与Registry进行交互。
  • Docker Registry作为一个官方开源的Docker镜像仓库,本身并没有提供图形界面。这也是生产中使用不多的原因,一般就会使用基于官方的二开产品,例如:Harbor

操作示例

  1. 直接运行registry,该镜像需要监听5000端口
[root@clinet ~]# docker run -d -p 5000:5000 registry 
a12a139819175b14e708ea4d2cdec569a979075a2f9f5a67d4c5317584b0449f
[root@clinet ~]# 
[root@clinet ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
a12a13981917   registry   "/entrypoint.sh /etc…"   3 seconds ago   Up 2 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   laughing_chandrasekhar
[root@clinet ~]# 
  1. 查看本地端口已监听;
[root@clinet ~]# netstat -ntpl |grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      3081/docker-proxy   
tcp6       0      0 :::5000                 :::*                    LISTEN      3086/docker-proxy   
[root@clinet ~]#
  1. 在机器2上给要上传的镜像打tag
[root@lvs-1 ~]# docker tag nginx:latest  192.168.194.128:5000/livrary/nginx:v1 
[root@lvs-1 ~]# docker images 
REPOSITORY                           TAG       IMAGE ID       CREATED         SIZE
busybox                              latest    beae173ccac6   15 months ago   1.24MB
192.168.194.128:5000/livrary/nginx   v1        605c77e624dd   15 months ago   141MB
nginx                                latest    605c77e624dd   15 months ago   141MB
[root@lvs-1 ~]# 
  • 192.168.194.128:5000 :表示registry的地址;
  • library : 表示registry中的项目名称,默认仓库会有一个公共项目,名称叫library,在图形化的regustry中我们可以自定义仓库项目;
  • nginx : 表示上传的镜像名称。
  1. push至镜像仓库
[root@lvs-1 ~]# docker push 192.168.194.128:5000/livrary/nginx:v1
The push refers to repository [192.168.194.128:5000/livrary/nginx]
d874fd2bc83b: Pushed 
32ce5f6a5106: Pushed 
f1db227348d0: Pushed 
b8d6e692a25e: Pushed 
e379e8aedd4d: Pushed 
2edcec3590a4: Pushed 
v1: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
[root@lvs-1 ~]# 

错误分析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ogkqTJoW-1681221166688)(D:\学习\学习笔记\图片\63.png)]

这个错误的原因是:Docker客户端会使用HTTPS协议去访问Docker Registry,因为HTTPS可以提供更好的安全性和加密保护。为了解决这个问题,我们需要在docker的配置文件中添加insecure-registry

[root@lvs-1 ~]# cat /etc/docker/daemon.json 
{"registry-mirrors": ["https://mqkiky4e.mirror.aliyuncs.com"],"insecure-registries": ["http://192.168.194.128:5000"]
}
[root@lvs-1 ~]#
  1. 在机器a上下载验证。
[root@clinet ~]# docker pull 192.168.194.128:5000/livrary/nginx:v1
v1: Pulling from livrary/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3
Status: Downloaded newer image for 192.168.194.128:5000/livrary/nginx:v1
192.168.194.128:5000/livrary/nginx:v1
[root@clinet ~]# 

总结:

  • 官方registry不提供图形化,因此我们在上传进行后也无法直观查看;
  • docker search查找镜像也无法查找指定的私有仓库,这是因为docker官方把search命令封装死了,直接查找的就是官方hub。

hyper/docker-registry-web

hyper/docker-registry-web是github上的一个超级简单的registry图形界面工具,上面提供了基础的镜像内容,github地址:https://hub.docker.com/r/hyper/docker-registry-web

  1. 搭建web界面
[root@clinet ~]# docker run -d -p 5000:5000 --name registry-srv registry:2
[root@clinet ~]# docker run -it -p 8080:8080 --name registry-web --link registry-srv -e \ REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web 

  1. 上传busybox镜像
[root@clinet ~]# docker tag busybox:latest 192.168.194.128:5000/livrary/busybox:v1 
[root@clinet ~]# 
[root@clinet ~]# docker push 192.168.194.128:5000/livrary/busybox:v1
The push refers to repository [192.168.194.128:5000/livrary/busybox]
01fd6df81c8e: Pushed 
v1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527
[root@clinet ~]# 


​ 本章带我们简单了解了什么是docker-registry,当然官方的registry太过简单,因此这不是我们学习的重点,下一章节我们将重点介绍第三方的仓库:Docker Harbor


http://www.ppmy.cn/news/44548.html

相关文章

itop-3568开发板驱动学习笔记(20)中断线程化

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录中断线程化简介中断线程化 API中断线程化实验中断线程化简介 中断线程化也是中断下文的一种方式,与工作队列和软中断不同的是,中断线程只用于这个中断,当发生中断的时候&a…

Spring入门案例--IOC入门案例

IOC入门案例思路分析 (1)Spring是使用容器来管理bean对象的,那么管什么? 主要管理项目中所使用到的类对象,比如(Service和Dao) (2)如何将被管理的对象告知IOC容器? 使用配置文件 (3)被管理的对象交给IOC容器,要想从容器中获取对象&…

网络安全自学笔记+岗位介绍

我就在这个行业,目前湖南,薪资就没必要说了,高就对了。 这个行业优势就是工资高,缺点就需要一直学,卷得要死,不是跟别人卷,而是自己卷,一会后面细说 这个行业目前分为几个岗位&#…

低代码,是稳打稳扎还是饮鸩止渴?

2023年,业内对低代码的发展充满了想象。 人们认为,未来低代码它的商业价值不可估量。 据Gartner的最新报告显示,到2023年,全球低代码开发技术市场规模预计将达到269亿美元,比2022年增长19.6%。 随着数字化进入深水区&a…

Excel VBA 之Interior 对象设置底色

Interior 对象 代表一个对象的内部 针对interior对象,我们用得最多的是它的颜色,下面就来讨论一下。 1.ColorIndex 索引颜色值 Sub 索引颜色值()For i 1 To 56Cells(i, 1).Interior.ColorIndex iCells(i, 2) iNext iFor i 1 To 56Cells(i, 3).Interi…

【C++】哈希的应用——bitset(STL)位图

哈希的应用——bitset(STL)位图 文章目录哈希的应用——bitset(STL)位图一、bitset的介绍1.位图的引入2.位图的概念3.位图的应用二、bitset的使用1.bitset的构造方式2.bitset成员函数的使用3.bitset运算符的使用三、bitset位图的模拟实现1.位图的基本框架2.成员函数2.1.构造函数…

【教程】Unity 与 Simence PLC 联动通讯

开发平台:Unity 2021 依赖DLL:S7.NET 编程语言:CSharp 6.0 以上   一、前言 Unity 涉及应用行业广泛。在工业方向有着一定方向的涉足与深入。除构建数据看板等内容,也会有模拟物理设备进行虚拟孪生的需求需要解决。而 SIMATIC&a…

4点决定你在银行的到手薪资

众所周知,银行的工资水平在整个国家中也是排名靠前的。然而,全国范围之内,有4000多家银行,有20多万个网点,不同的银行,甚至同一银行不同区域的网点之间的工资差别都是比较大的,即使是在同一家银…