关于 Docker Registry (镜像仓库)

什么是镜像仓库

概念

镜像仓库(Docker Registry)负责存储、管理和分发镜像,并提供了登录认证能力,建立了仓库的索引。

镜像仓库管理多个 Repository,Repository 通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签(Tag)来区分(也就是每个镜像的每一个小版本)。

一个容器镜像又包含 元数据 和 blob。

元数据就是由 dockerfile 构建出来的描述文件,主要记录了一个容器镜像有多少层,每一层里有什么内容。

blob 中存储的就是真正的可执行文件,也是真正占有空间的东西。

  • 镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过 DNS 或 IP 地址来确定一个镜像仓库如 hub.docker.com;一个 Registry 中可以存在多个 Repository,Repository 又可分为顶层仓库和用户仓库(用户仓库名称格式为:用户名/仓库名,每个仓库可以包含多个 Tag,每个 Tag 对应一个镜像)。

  • Repository:由某特定的 docker 镜像的所有迭代版本组成的镜像仓库。

  • 镜像名称(name)+ 标签(tag):如 nginx:latest。

  • 认证能力:提供用户注册、登录、登出能力。

  • 索引:提供镜像的索引信息,方便检索。

镜像仓库分类

按是否对外开放划分:

  1. 公有仓库:如阿里云、dockerhub 等被放到公有网络上,不用登录就可以下载,可免费供大家使用的镜像。

  2. 私有仓库:不对外开放,一般被放在私有网络上,只有内部人员可以使用。

按供应商和面向群体划分:

  1. sponsor registry(赞助):第三方的 registry,供客户和 docker 社区版使用。

  2. mirror registry(镜像):第三方的 registry,只让客户使用,例如阿里云等。

  3. vender registry(供应商):由发布 docker 镜像的供应商提供的 registry,例如 Google 和 Redhat 提供的镜像仓库服务。

  4. private registry:通过没有防火墙和额外的安全层的私有实体提供的 registry,仅供内部使用。

镜像仓库工作机制

镜像仓库使用流程

  • 通过 docker login 登录仓库

  • Docker pull 拉取需要的镜像

  • 通过 dockerfile 或 commit 等方式制作完镜像后通过 docker push 上传到仓库

镜像仓库如何在实际研发中使用

首先要知道,一个项目或系统,从开始研发到上线使用的过程中,要经过几个不同的环境。

  • 开发环境:开发人员使用的一套环境。

  • 测试环境:需求开发完成后,发布到供测试人员进行测试的环境。

  • 预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布。

  • 生产环境:真正面向客户的环境。

针对不同的阶段要有不同的环境,才能得到想要的效果,所以也就需要不同的镜像来满足不同阶段对于环境的不同需求。

Docker Registry 中的镜像通常由开发人员制作,然后推送到公有或私有的 Registry 上保存,供其他人员使用,例如部署到生产环境。

镜像仓库的拉取机制

启动容器时,docker daemon 会试图从本地获取相关的镜像。本地镜像不存在时,其将从 Registry 中下载该镜像并保存到本地。

搭建 nginx 服务

了解 web 服务器和 Nginx

Web 服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。Web 服务器可以向 Web 浏览器等客户端提供文档,也可以防止网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。

Nginx 作为 web 服务器可以向各种浏览器等客户端提供浏览服务,比如通过手机、电脑、平板可以访问百度来实现对 web 服务器的访问。

正向代理

由于防火墙的原因,我们并不能直接访问外网,可以借助 VPN 来实现,这就是一个正向代理的例子。

正向代理“代理”的是客户端,而客户端是知道目标的,目标是不知道客户端是通过 VPN 访问的。

反向代理

当我们在外网访问百度的时候,其实会进行一个转发,代理到内网,这就是所谓的反向代理。

也就是说,反向代理“代理”的是服务器端,而且这个过程对于客户端而言是透明的。

开始搭建 Nginx

本来按理来说,应该先介绍搭建过程中涉及到的各种命令,但是,我懒得写了...读者如果遇到了自己不熟悉的命令,请先跳转百度一下!

先找到一个合适的 nginx

root@hcss-ecs-3f38:~# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL
nginx                              Official build of Nginx.                        19996     [OK]
unit                               Official build of NGINX Unit: Universal Web …   32        [OK]
nginx/nginx-ingress                NGINX and  NGINX Plus Ingress Controllers fo…   92        
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  154       
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter for NGINX and NGIN…   42        
nginx/nginx-ingress-operator       NGINX Ingress Operator for NGINX and NGINX P…   2         
nginx/unit                         This repository is retired, use the Docker o…   63        
nginxinc/nginx-s3-gateway          Authenticating and caching gateway based on …   6         
nginx/nginx-quic-qns               NGINX QUIC interop                              1         
nginxinc/amplify-agent             NGINX Amplify Agent docker repository           1         
nginxinc/ingress-demo              Ingress Demo                                    4         
nginxproxy/nginx-proxy             Automated nginx proxy for Docker containers …   142       
nginx/unit-preview                 Unit preview features                           0         
bitnami/nginx                      Bitnami container image for NGINX               192       
nginxproxy/acme-companion          Automated ACME SSL certificate generation fo…   135       
ubuntu/nginx                       Nginx, a high-performance reverse proxy & we…   114       
nginxproxy/docker-gen              Generate files from docker container meta-da…   17        
kasmweb/nginx                      An Nginx image based off nginx:alpine and in…   8         
bitnami/nginx-ingress-controller   Bitnami container image for NGINX Ingress Co…   34        
nginxinc/ngx-rust-tool                                                             0         
nginxinc/mra_python_base                                                           0         
nginxinc/mra-fakes3                                                                0         
bitnami/nginx-exporter             Bitnami container image for NGINX Exporter      5         
rancher/nginx                                                                      2         
root@hcss-ecs-3f38:~# 

但是这样命令行的方式查找,不会显示详细的信息,还是建议到官网去查。(更建议使用已经认证过的 nginx)

找到你喜欢的那个镜像,然后拉取:

root@hcss-ecs-3f38:~# docker pull nginx:1.23.3 
1.23.3: Pulling from library/nginx 
3f9582a2cbe7: Pull complete  
9a8c6f286718: Pull complete  
e81b85700bc2: Pull complete  
73ae4d451120: Pull complete  
6058e3569a68: Pull complete  
3a1b8f201356: Pull complete  
Digest:  
sha256:aa0afebbb3cfa473099a62c4b32e9b3fb73ed23f2a75a65ce1d4b4f55a5 
c2ef2 
Status: Downloaded newer image for nginx:1.23.3 
docker.io/library/nginx:1.23.3 

然后查看镜像是否拉取成功:

root@hcss-ecs-3f38:~# docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE 
nginx 1.23.3 904b8cb13b93 8 days ago 142MB 
hello-world latest feb5d9fea6a5 17 months ago 13.3kB 

然后运行镜像:

docker run --name nginx1 --rm -it -p 80:80 nginx:1.23.3 bash 

然后查看一下,在容器的 shell 中,执行 cat /etc/"release" 查看操作系统还是不是 Ubuntu。

之后,启动 nginx:

root@hcss-ecs-3f38:~# nginx
2023/03/10 11:22:05 [notice] 7#7: using the "epoll" event method 
2023/03/10 11:22:05 [notice] 7#7: nginx/1.23.3 
2023/03/10 11:22:05 [notice] 7#7: built by gcc 10.2.1 20210110  
(Debian 10.2.1-6)  
2023/03/10 11:22:05 [notice] 7#7: OS: Linux 5.4.0-100-generic 
2023/03/10 11:22:05 [notice] 7#7: getrlimit(RLIMIT_NOFILE):  
1048576:1048576 
root@5f377aec47ce:/# 2023/03/10 11:22:05 [notice] 8#8: start  
worker processes 
2023/03/10 11:22:05 [notice] 8#8: start worker process 9 
172.17.0.1 - - [10/Mar/2023:11:22:15 +0000] "GET / HTTP/1.1" 200  
615 "-" "curl/7.68.0" "-"

然后保持这个 shell 不退出,打开另一个 shell 窗口执行 curl 命令,可以看到 nginx 的欢迎信息返回:

Shell 
root@hcss-ecs-3f38:~# curl 127.0.0.1 
<!DOCTYPE html> 
<html> 
<head> 
<title>Welcome to nginx!</title> 
<style> 
html { color-scheme: light dark; } 
body { width: 35em; margin: 0 auto; 
font-family: Tahoma, Verdana, Arial, sans-serif; } 
</style> 
</head> 
<body> 
<h1>Welcome to nginx!</h1> 
<p>If you see this page, the nginx web server is successfully  
installed and 
working. Further configuration is required.</p> 
<p>For online documentation and support please refer to 
<a href="http://nginx.org/">nginx.org</a>.<br/> 
Commercial support is available at 
<a href="http://nginx.com/">nginx.com</a>.</p> 
<p><em>Thank you for using nginx.</em></p> 
</body> 
</html> 

如果你的服务器的 80 端口外部能访问,则可以用浏览器看到 nginx 的欢迎页面。

注意云厂商一般都屏蔽了 80 端口,需要联系客服开通。

之后,shell 退出观察再 curl 发现已经 ping 不通了,说明 nginx 是容器里的,而不是服务器里的。

root@hcss-ecs-3f38:~# curl 127.0.0.1 
curl: (7) Failed to connect to 127.0.0.1 port 80: Connection  
refused 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/378120.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WAF基础介绍

WAF 一、WAF是什么&#xff1f;WAF能够做什么 二 waf的部署三、WAF的工作原理 一、WAF是什么&#xff1f; WAF的全称是&#xff08;Web Application Firewall&#xff09;即Web应用防火墙&#xff0c;简称WAF。 国际上公认的一种说法是&#xff1a;Web应用防火墙是通过执行一…

[Labview] 表格单元格外边框 二维图片叠加绘图

最终效果如下所示 转行做Labview都没到三个月&#xff0c;主程居然让我做这么复杂的功能&#xff0c;真是看得起我/(ㄒoㄒ)/~~ 思路大致分为两步 1、确定每个框体的左上/右下单元格位置&#xff0c;转换为表格表格坐标并在二维图片上绘制生成&#xff1b; 2、为二维图片添加…

cuda缓存示意图

一、定义 cuda 缓存示意图gpu 架构示意图gpu 内存访问示意图 二、实现 cuda 缓存示意图 DRAM: 通常指的是GPU的显存&#xff0c;位于GPU芯片外部&#xff0c;通过某种接口&#xff08;如PCIE&#xff09;与GPU芯片相连。它是GPU访问的主要数据存储区域&#xff0c;用于存储大…

MBR40150FCT-ASEMI无人机专用MBR40150FCT

编辑&#xff1a;ll MBR40150FCT-ASEMI无人机专用MBR40150FCT 型号&#xff1a;MBR40150FCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;40A 最大循环峰值反向电压&#xff08;VRRM&a…

shell的变量及赋值

文章目录 一&#xff0c;shell变量是什么二&#xff0c;自定义变量1 . 查看和引用变量的值2 . echo选项3 . unset4 . 特殊符号5 . 括号 三&#xff0c;交互式定义变量1 . read2 . read 选项 四&#xff0c;变量的范围1 . export命令 五&#xff0c;数值变量的运算及特殊变量1 .…

鸿蒙Harmony--文本组件Text属性详解

金樽清酒斗十千&#xff0c;玉盘珍羞直万钱。 停杯投箸不能食&#xff0c;拔剑四顾心茫然。 欲渡黄河冰塞川&#xff0c;将登太行雪满山。 闲来垂钓碧溪上&#xff0c;忽复乘舟梦日边。 行路难&#xff0c;行路难&#xff0c;多歧路&#xff0c;今安在&#xff1f; 长风破浪会有…

浅析stm32启动文件

浅析stm32启动文件 文章目录 浅析stm32启动文件1.什么是启动文件&#xff1f;2.启动文件的命名规则3.stm32芯片的命名规则 1.什么是启动文件&#xff1f; 我们来看gpt给出的答案&#xff1a; STM32的启动文件是一个关键的汇编语言源文件&#xff0c;它负责在微控制器上电或复位…

探索数据结构与算法的奇妙世界 —— Github开源项目推荐《Hello 算法》

在浩瀚的编程与计算机科学领域中&#xff0c;数据结构与算法无疑是每位开发者攀登技术高峰的必经之路。然而&#xff0c;对于初学者而言&#xff0c;这条路往往布满了荆棘与挑战。幸运的是&#xff0c;今天我要向大家推荐一个令人振奋的项目——《Hello Algo》&#xff0c;它正…

在 Vue3 + Electron 中使用预加载脚本(preload)

文章目录 一、什么是预加载脚本(preload)&#xff0c;为什么我们需要它二、通过预加载脚本暴露相关 API 至渲染进程1、实现获取系统默认桌面路径功能2、向剪切板写入内容3、使用系统默认浏览器访问目标 url4、使用文件选择对话框 三、参考资料 一、什么是预加载脚本(preload)&a…

负载测试和功率分析中负载箱的重要作用

在负载测试和功率分析中&#xff0c;负载箱扮演着至关重要的角色。以下是负载箱在这两个方面的重要作用&#xff1a; 一、负载测试中的重要作用 模拟实际负载条件&#xff1a; 负载箱能够模拟各种复杂的负载条件&#xff0c;包括电阻性负载、电感性负载、电容性负载等&#x…

【HarmonyOS开发】弹窗交互(promptAction )

实现效果 点击按钮实现不同方式的弹窗showToast showDialog showActionMenu 代码实现 1.引入’ohos.promptAction’ import promptAction from ohos.promptAction;2.通过promptAction 实现系统既定的弹窗 import promptAction from ohos.promptAction;Entry Component st…

Spring-Spring、IoC、DI、注解开发

1、Spring是什么 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring整体架构 Spring优点&#xff1a; Spring属于低侵入设计。IOC将对象之间的依赖关系交给Spring,降低组件之间的耦合&#xff0c;实现各个层之间的解耦&#xff0c;让我们更专注于业务…

数据库内核研发学习之路(三)创建postgres内置函数

本章之前已经讲明白了我们的postgres如何进行编译安装&#xff0c;这是很重要的一步&#xff0c;接下来就是学会对postgres进行小的改动&#xff0c;然后保证依然能够顺利编译安装运行&#xff01; 本章续讲内容如何创建一个内置函数。 1、内置函数和用户自定义函数的区别 熟…

如何在所有docker命令前加上一个sudo

如果当前登录用户不是root不用&#xff0c;使用docker命令的时候&#xff0c;需要在前面加上一个sudo 提升权限。 但是每次都加&#xff0c;就感觉特别的麻烦&#xff0c;如何简化呢&#xff1f; 解决办法 打开你的shell配置文件&#xff08;例如&#xff0c;如果你使用bash&am…

多媒体软件开发选择Animate软件还是Unity3D软件?

以下内容可能有一些片面&#xff0c;因为多媒体软件开发平台有很多&#xff0c;因为接触Animate和Unity3D比较多&#xff0c;所以这里仅对这两款进行分析&#xff01; Animate软件与Unity3D软件都是经常在多媒体展馆中用来制作互动展示内容的&#xff0c;对于这两种开发平台&a…

Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截

摘要 在当今互联网时代&#xff0c;数据采集已成为获取信息的重要手段。然而&#xff0c;随着反爬虫技术的不断进步&#xff0c;爬虫开发者面临着越来越多的挑战。本文将探讨Java爬虫在抓取TikTok音频时的安全策略&#xff0c;包括如何防止请求被拦截&#xff0c;以及如何提高…

园区道路车辆智能管控视频解决方案,打造安全畅通的园区交通环境

一、背景需求分析 随着企业园区的快速发展和扩张&#xff0c;道路车辆管理成为了保障园区秩序、提升运营效率及确保员工安全的重要任务。针对这一需求&#xff0c;旭帆科技TSINGSEE青犀提出了一种企业园区道路车辆管控的解决方案&#xff0c;通过整合视频监控、智能识别等技术…

LVS+Nginx高可用集群---搭建高可用集群负载均衡

1.LVS简介 Lvs(Linux Virtual Server)&#xff1a;使用集群&#xff0c;对于整个用户来说是透明&#xff0c;用户访问的时候是单个高性能的整体。道理与nginx类似 LVS网络拓扑图&#xff1a;是基于四层。 用户通过浏览器发送请求&#xff0c;然后到达LVS.Lvs根据相应算法将…

【TensorRT】Yolov5-DeepSORT 目标跟踪

Yolov5-DeepSORT-TensorRT 本项目是 Yolo-DeepSORT 的 C 实现&#xff0c;使用 TensorRT 进行推理 &#x1f680;&#x1f680;&#x1f680; 开源地址&#xff1a;Yolov5_DeepSORT_TensorRT&#xff0c;求 star⭐ ~ 引言 ⚡ 推理速度可达25-30FPS&#xff0c;可以落地部署&…

南京邮电大学统计学课程实验2 用EXCEL进行参数估计假设检验 指导

一、实验描述 实验目的 1、学会用Excel进行参数估计&#xff1b; 2、学会用Excel进行z检验-双样本平均差检验&#xff1b; 实验环境 实验中使用以下软件和硬件设备 &#xff08;1&#xff09;Windows XP操作系统&#xff1b; &#xff08;2&#xff09;PC机、EXCEL软件&…