关于 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.mzph.cn/bicheng/48199.shtml

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

相关文章

P1-AI产品经理--九五小庞

产品经理的定位 AI基于现有业务挖掘AI应用场景&#xff0c;服务提供商选择及算法定制等&#xff0c;配合已有产品完成整体产品工工资基于从事医疗行业的考虑&#xff0c;我们走的应该是AI产品经理&#xff08;软件型&#xff09; AI产品经理&#xff08;行业型&#xff09; AI…

Python爬虫(1) --基础知识

爬虫 爬虫是什么&#xff1f; spider 是一种模仿浏览器上网过程的一种程序&#xff0c;可以获取一些网页的数据 基础知识 URL 统一资源定位符 uniform resource locator http: 超文本传输协议 HyperText Transfer Protocol 默认端口 80 https: 安全的超文本传输协议 security…

通过HTML/CSS 实现各类进度条的功能。

需求&#xff1a;我们在开发中会遇到使用各式各样的进度条&#xff0c;因为当前插件里面进度条各式各样的&#xff0c;为了方便我们定制化的开发和方便修改样式&#xff0c;我们这里使用HTML和CSS样式来进行开发进度条功能。 通过本文学习我们会明白如何使用 HTML/CSS 创建各种…

复旦微核心板:基于复旦微FMQL45T900 全国产化核心板

近期开发的一款搭载复旦微FMQL45T900的全国产核心板。FMQL45T900这款是一款高度集成的国产化芯片&#xff0c;它在一个单芯片中融合了多种功能&#xff0c;特别强调的是它的国产化特性&#xff0c;即其设计、制造和知识产权完全属于中国。 处理器性能&#xff1a; 处理器架构&a…

Python和C++行人轨迹预推算和空间机器人多传感融合双图算法模型

&#x1f3af;要点 &#x1f3af;双图神经网络模型&#xff1a;最大后验推理和线性纠错码解码器 | &#x1f3af;重复结构和过约束问题超图推理模型 | &#x1f3af;无向图模型变量概率计算、和积消息传播图结构计算、隐马尔可夫模型图结构计算、矩阵图结构计算、图结构学习 |…

QT--多页面、定时器和日期时间数据

多页面 widget.ui 负责实现一个页面; mian.cpp创建窗体对象,并监控上面的事件 窗口的显示和隐藏: 一个窗体,比如logpage widget,继承QWidget QWidget::show(); 显示该窗体 QWidget::hide(); 隐藏该窗体 页面间通信采用在main.cpp中创建connect槽函数。 代码如下 //main.c…

【ML练习】决策树

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、决策树算法概述 二、代码实现 代码目标&#xff1a;我们希望通过鸢尾花数据&#xff0c;训练一个决策树模型&#xff0c;之后应用该模型&#xff0c;可以…

STM32 CAN外设(基于STMF103C8T6)

STM32内置bxCAN外设&#xff08;CAN控制器)&#xff0c;支持CAN2.0A和2.0B&#xff0c;可以自动发送CAN报文和按照过滤器自动接收指定CAN报文&#xff0c;程序只需处理报文数据而无需关注总线的电平细节 波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接…

Java后端开发(十五)-- Ubuntu 开启activemq开机自启动功能

目录 1. 修改Wrapper.conf文件配置内容 2. 在/etc/systemd/system目录下创建activemq.service文件 3. 重启服务器,验证是否生效 4. 系统启动目标问题 操作环境: 1、Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-28-generic x86_64) 2、jdk17.0.11 3、apache-activemq-6.0.1 1. 修…

学习测试10-1自动化 python基础

下载python 要配置环境变量 进入Python的官方下载页面 http://www.python.org/download/安装PyCharm工具&#xff0c;网上可以下载&#xff0c;很多资源&#xff0c;也有免安装的版本&#xff0c;在网上找激活码 链接: https://pan.baidu.com/s/1Y6S_n3KbnjOdE9EDZ5nixw?pwdd…

CentOS 7 yum官方源失效

问题 2024年7月&#xff0c;官方对centos 7停止了维护&#xff0c;yum的源网址mirror.centos.org也已经无法访问。 在此情况下&#xff0c;无法正常使用yum进行安装和更新工具。 在尝试了更换阿里源之后&#xff0c;仍然有部分工具库无法访问。 通用解决方案 1. 打开/etc/y…

AWS Certified Developer Associate备考笔记

AWS Certified Developer Associate备考笔记 缓慢更新中&#xff0c;如果你也正在关注该考试&#xff0c;请点赞后评论感兴趣的章节&#xff0c;可加快我的更新速度 &#x1f603; 文章目录 AWS Certified Developer Associate备考笔记一、IAM二、EC2三、EC2 Instance Storage…

【WordPress插件】Media folder汉化版-媒体文件夹-v5.1.2

WP媒体文件夹(WP Media folder)是一个真正的节省图片加载时间的插件&#xff0c;你可以管理文件和图片&#xff0c;从本地WordPress媒体管理器。该插件还包括一个增强版的WordPress图库管理器&#xff0c;主题 NextGEN图库导入器。 【WordPress插件】Media folder汉化版-媒…

C++的STL简介

0.STL简介 C的STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的一部分&#xff0c;它提供了一套通用的类和函数模板&#xff0c;用于处理数据结构和算法。STL的主要组件包括&#xff1a; 容器分配器算法迭代器适配器仿函数 容器 容…

数据库系统概论:事务与并发一致性问题

随着网络应用的普及&#xff0c;数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面&#xff0c;旨在提高系统的吞吐量和响应时间&#xff0c;以满足多用户同时访问数据库的需求。然而&#xff0c;这…

Linux NFS服务搭建及使用

一、NFS 服务器介绍 nfs &#xff08; Network File System &#xff09;即网络文件系统&#xff0c;其基于 UDP/IP使用 nfs 能够在不同计算机之间通过网络进行文件共享&#xff0c;能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 二、NFS 服务器的特点 …

Websocket自动消息回复服务端工具

点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发…

d3d12.dll 文件缺失如何解决?五种修复丢失问题的方法

d3d12.dll 文件缺失如何解决&#xff1f;它为什么会不见呢&#xff1f;今天&#xff0c;我们将探讨 d3d12.dll 文件的重要性、原因以及丢失时的解决策略。本文将全面介绍 d3d12.dll 文件&#xff0c;并提供五种修复丢失问题的方法。 d3d12.dll文件是什么的详细介绍 d3d12.dll …

vst 算法R语言手工实现 | Seurat4 筛选高变基因的算法

1. vst算法描述 &#xff08;1&#xff09;为什么需要矫正 image source: https://ouyanglab.com/singlecell/basic.html In this panel, we observe that there is a very strong positive relationship between a gene’s average expression and its observed variance. I…

OpenAI 推出 GPT-4o mini,一种更小、更便宜的人工智能模型

OpenAI 最近推出了新型人工智能模型 GPT-4o mini&#xff0c;以其较小体积和低成本受到关注。这款模型在文本和视觉推理任务上性能优越&#xff0c;且比现有小型模型更快、更经济。GPT-4o mini 已向开发者和消费者发布&#xff0c;企业用户将在下周获得访问权限。 喜好儿网 在…