docker(四)使用篇一:docker 镜像仓库

前文我们已经介绍了 docker 并安装了 docker,下面我们将正式步入使用环节,本章是第一个使用教学:docker 镜像仓库

一、什么是镜像仓库

所谓镜像仓库,其实就是负责存储、管理和分发镜像的仓库,并且建立了仓库的索引,提供了登录认证能力。

镜像仓库可以看做一个大仓库,其内部又管理多个小镜像仓库(Repository),这些小镜像仓库通过命名来区分。

每个 Repository 包含一个或多个镜像,镜像之间则通过镜像名称和标签 (Tag)来区分。

镜像仓库整体视图

大镜像仓库(Registry)

镜像仓库可以看做一个大仓库,要从哪一个镜像仓库拉取镜像,通常通过 DNS 或 IP 地址来确定一个镜像仓库(如hub.docker.com)。一个 Registry 中可以存在多个 Repository。

小镜像仓库(Repository) 

由某特定的 docker 镜像的所有迭代版本组成的镜像仓库;又可分为“顶层仓库用户仓库”,用户仓库名称格式为“用户名 / 仓库名”。
每个仓库可以包含多个 Tag(标签),每个标签对应一个镜像。(镜像名称(name)+标签(tag):如 nginx:latest)

认证能力:

提供用户注册,登录、登出镜像仓库的能力。

索引:

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

一个容器镜像实际包含了两个部分:

一个是元数据(存储镜像信息的数据),其实就是由 dockerfile 构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的 checksum 这些信息都会记录下来,还有最终的可执行文件在哪,都是在这个元数据里面。

还有一个是 blob 文件,它真正保存了数据,也真正占用空间。

二、镜像仓库的分类

1、以是否对外开放划分种类(研发人员常用):

1)公有仓库:像阿里云、docker hub 等放到公有网络上的镜像仓库,不用登录就可以下载镜像,供大家访问使用。

2)私有仓库:不对外开放,往往位于私有网络,只有公司内部人员可以使用。

2、按供应商和面向群体划分种类

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

(2)mirror(镜像) registry:第三方的 registry,只让客户使用,例如阿里云必须注册才能使用。

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

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

三、镜像仓库的工作机制

1、镜像仓库的使用流程

(1)通过 docker login 登录仓库

(2)Docker pull 拉取需要的镜像

(3)通过 dockerfile 或者 commit 等方式制作完镜像再通过 docker push 上传到仓库

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

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

实际工作中的 docker 使用流程图

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

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

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

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

3、镜像仓库的拉取机制

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

四、常见的镜像仓库

1、docker hub(已被封禁,可以拉取公有镜像,但无法登陆私有仓库)

注意:截止至文章发布,因某些原因,docker hub 在国内已经被封禁,无法通过国内网络访问,仅可以拉取公有镜像!

Docker Hub Docker 提供的托管存储库服务,用于查找容器映像并与团队共享。

具有以下功能:

1)个人可以注册私有仓库,能够发布自己的镜像

2)提供镜像检索能力

3)提供海量官方和认证组织的镜像

4)从 GitHub Bitbucket 自动构建容器镜像并将它们推送到 Docker Hub

5)支持 webhook(webhook 是一种基于 HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的 webhook URL)

docker hub 的功能浏览

1、搜索镜像

 2、镜像 tag 查找

3、对应版本拉取命令

4、镜像的大小,idcpu 架构查看

2、国内公有镜像仓库

由于 docker hub 已经被封禁,通过正常渠道,我们只能访问国内各大云服务商提供的镜像仓库,如腾讯、阿里、华为等,笔者由于云服务器是华为云的,因此这里给出华为云镜像仓库的链接以及如何创建私有的镜像仓库:

华为开源镜像仓库

Docker华为云创建私人镜像仓库

3私有仓库

私有镜像仓库则是指部署在公司或组织内部的,用于自身应用 Docker 镜像存储、分发的镜像仓库。

在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,CI / CD 流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的。

常见的私有仓库工具:

Harbor:Harbor: 

VMware 公司最近开源的企业级 Docker Registry 项目, 其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。它以 Docker 公司开源的registry 为基础,提供了管理 UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP 集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 来对它进行部署。

Nexus:

Nexus Sonatype 公司发布的一款仓库(Repository)管理软件,目前常被用来作为 Maven 私服、Docker 私服。

Docker registry:

docker 官方提供的私服,类似于 docker hub。用于保存公司内部上传的 Docker 镜像。

五、核心:镜像仓库相关命令

命令清单

命令别名功能备注
docker login登录仓库(在拉取私人镜像 / 向个人仓库推送镜像时,需要使用)必须掌握
docker logout登出仓库
docker pulldocker image pull从仓库拉取镜像(拉取公有镜像不需要登录)必须掌握
docker pushdocker image push向仓库推送镜像必须掌握
docker search查找镜像仓库中某个镜像(一般直接在网页查询了,用的较少)

1、docker login

# 注意:[]表示可选项,可有可无,后面都是如此,这里特别说明,后面不再赘述
docker login [核心参数] [镜像仓库地址]

核心参数:

-u(镜像仓库的用户名)

-p(镜像仓库的密码,建议不要在命令行中输入,会被看见

功能登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。 

通过华为云容器镜像服务给的登录指令,成功登录笔者自己的仓库

2、docker pull

# 此处的 TAG 指的是镜像标签;DIGEST则是另一种表示,sha256的值
docker pull [关键参数] 镜像仓库名[:TAG 或者 @DIGEST]

关键参数:

-a:拉取指定仓库中的某一镜像的所有不同版本。

--disable-content-trust :忽略镜像的校验,默认开启

功能:从镜像仓库中拉取指定镜像

# 示例:拉取 nginx 1.23.3 版本
docker pull nginx:1.23.3

3、docker push

docker push [关键参数] 镜像名称[:TAG]

关键参数:

-a:推送某一镜像的所有不同版本。

--disable-content-trust :忽略镜像的校验,默认开启

功能:把本地镜像上传至当前登录的镜像仓库

# 示例:向自己的的仓库推送 myapache v1 版本
docker push myapache:v1

4、docker search

# 因 docker hub 被国内封禁,此命令暂时无法实操
docker search [关键参数] 镜像名称

关键参数

--no-trunc:显示完整的镜像描述;

 -f <过滤条件>:列出收藏数不小于指定值的镜像。

功能:查找镜像仓库中某个镜像(一般直接在网页查询了,用的较少)

# 从 Docker Hub 查找所有镜像名包含 nginx,并且 star 数大于 10 的镜像
docker search -f stars=10 nginx

 5、docker logout

docker logout [镜像仓库地址]

功能:登出镜像仓库

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

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

相关文章

单片机开发软件

目录 纯编码 vscode Ardunio Keil 1. 集成化开发环境&#xff08;IDE&#xff09; 2. 多架构芯片支持 3. 高效的代码生成与优化 4. 强大的调试与仿真功能 5. 丰富的库函数与生态系统 6. 教育与企业级适用性 典型应用场景 半编码半图形化 STM32CUBEIED 1. 图形化配置…

【虚幻引擎】UE5独立游戏开发全流程(商业级架构)

本套课程我将会讲解一下知识 1.虚幻引擎的常用功能节点、模块包含但不限于动画模块、UI模块、AI模块、碰撞模块、伤害模块、背包模块、准心模块、武器模块、可拾取物品模块、死亡等模块。 2.整个游戏的设计思路&#xff08;游戏架构&#xff09;&#xff0c;本套教程讲解了如…

ABP-Book Store Application中文讲解 - Part 2: The Book List Page

本章用于介绍如何创建Book List Page。 TBD 1. 汇总 ABP-Book Store Application中文讲解-汇总-CSDN博客 2. 前一章 ABP-Book Store Application中文讲解 - Part 1: Creating the Server Side 项目之间的引用关系。 目录 1. 多语言配置 1.1 zh-Hans.json 1.2 en.jso…

6、登录功能后端开发

6、登录功能后端开发 https://xiaoxueblog.com/ai/%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91.html 1、新建用户表SQL脚本 -- CREATE DATABASE aicloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 创建用户表 drop table if exi…

随机矩阵放大的方式 生成相位数据集,用于相位展开

import os import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import zoom import gc from tqdm import tqdm from zernike import RZerndef wrap_phase(phase):"""将相位包裹到[-π, π]区间"""return np.angle(np.exp(1…

Java面试全记录:Spring Cloud+Kafka+Redis实战解析

Java面试全记录&#xff1a;Spring CloudKafkaRedis实战解析 人物设定 姓名&#xff1a;张伟&#xff08;随机生成唯一姓名&#xff09; 年龄&#xff1a;28岁 学历&#xff1a;硕士 工作年限&#xff1a;5年 工作内容&#xff1a; 基于Spring Cloud搭建微服务架构使用Kafka…

Java Socket编程完全指南:从基础到实战应用

Socket编程是构建网络应用的基石&#xff0c;Java通过java.net包提供了强大的Socket API。本文将深入解析Java Socket类的核心用法&#xff0c;涵盖TCP/UDP协议实现、多线程通信及性能优化技巧&#xff0c;助您快速掌握网络编程精髓。 一、Socket编程核心概念 1.1 网络通信模型…

vue实现导出echarts图片和table表格

安装依赖 "xlsx": "^0.18.5","xlsx-style": "^0.8.13""file-saver": "^2.0.5",工具类 toolUtil const autoHeight () > {let winHeight 0if (window.innerHeight) {winHeight window.innerHeight} else if…

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月15日第78弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀6-8个和值&#xff0c;可以做到100-300注左右。 (1)定…

兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力

在B端产品市场&#xff0c;独特的品牌形象是企业脱颖而出的关键。兰亭妙微专注于B端UI设计&#xff0c;通过融合多元风格&#xff0c;为企业点亮品牌魅力&#xff0c;助力品牌价值提升。 兰亭妙微主创团队源自清华&#xff0c;历经多年沉淀&#xff0c;积累了丰富的设计经验。…

MMTEA-DTS--用于多目标多任务优化的基于分解的迁移选择

MMTEA-DTS–用于多目标多任务优化的基于分解的迁移选择 title&#xff1a; Multiobjective Multitasking Optimization With Decomposition-Based Transfer Selection author&#xff1a; Qiuzhen Lin, Zhongjian Wu, Lijia Ma, Maoguo Gong , Jianqiang Li, and Carlos A. C…

Python机器学习笔记(二十三 模型评估与改进-网格搜索)

上一次学习了评估一个模型的泛化能力,现在继续学习通过调参来提升模型的泛化性能。scikit-learn中许多算法的参数设置,在尝试调参之前,重要的是要理解参数的含义。找到一个模型的重要参数(提供最佳泛化性能的参数)的取值是一项棘手的任务,但对于几乎所有模型和数据集来说…

集成DHTMLX 预订排期调度组件实践指南:如何实现后端数据格式转换

在企业级应用中&#xff0c;预订系统&#xff08;Booking System&#xff09;作为典型的调度类应用&#xff0c;广泛用于酒店、会议室、设备预约、医疗排班等业务场景。而DHTMLX Scheduler作为一款功能强大且高度可定制的 JavaScript 日程安排控件&#xff0c;已成为众多开发者…

35页AI应用PPT《DeepSeek如何赋能职场应用》DeepSeek本地化部署与应用案例合集

这份名为《DeepSeek如何赋能职场应用》的PPT文档详细介绍了DeepSeek这一人工智能工具在职场中的多样化应用场景和操作技巧。内容涵盖了从基础模型到深度思考模型的不同功能&#xff0c;以及如何通过提示语技巧实现高效的人机协作。文档还展示了DeepSeek在制作可视化图表、PPT、…

Axure疑难杂症:母版菜单设置打开链接后菜单选中效果

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:菜单打开链接后子菜单选中效果 主要内容:母版设计、选中效果 应用场景:页面赋值 案例展示: 案例视频:

1.1 认识编程与C++

认识编程与C教程 目标 理解程序、指令、数据的概念。了解C在现实中的应用场景。学会搭建编程环境&#xff0c;迈出第一步。 一、编程是什么&#xff1f;——给计算机写“魔法指令” 1. 基本概念 程序&#xff1a;一系列指令的集合&#xff0c;像一本“魔法食谱”。 &#x…

centos7部署mysql5.7

1.下载mysql的官方yum源 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2.安装yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm3.安装秘钥文件 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-20224.安装mysql5.7…

javascript —— ! 和 !! 的区别与作用

javascript —— ! 和 !! 的区别与作用 在 JavaScript 里&#xff0c;! 和 !! 是两种不同的逻辑运算符&#xff0c;它们的功能和使用场景有明显区别。 1、 !&#xff08;逻辑非运算符&#xff09; 它的主要作用是 对操作数进行布尔值取反。具体来说&#xff0c;就是 先把操作…

基于互联网和LabVIEW的多通道数据采集系统仿真设计

标题:基于互联网和LabVIEW的多通道数据采集系统仿真设计 内容:1.摘要 在当今科技飞速发展的背景下&#xff0c;多通道数据采集在众多领域有着广泛需求。本研究的目的是设计一个基于互联网和LabVIEW的多通道数据采集系统仿真方案。采用互联网技术实现数据的远程传输与共享&…

前后端设置跨域并从后端允许发送cookie

在java后端创建config文件 package com.zf.demo.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigur…