当前位置: 首页 > news >正文

《Docker极简教程》--Docker基础--Docker的基本概念

在这篇文章中我们先大致的了解以下Docker的基本概念,在后续的文章中我们会详细的讲解这些概念以及使用。

一、容器(Container)

1.1 容器的定义和特点
  1. 容器的定义
    容器是一种轻量级、可移植的软件打包技术,用于打包应用及其依赖项和运行环境,形成一个独立的可执行单元,被称为容器。这种技术旨在确保应用程序能够在任何环境中都能够一致地运行。

  2. 容器的特点

    • 轻量性

      • 容器共享宿主机的内核,无需额外的操作系统,因此占用资源较少。
      • 启动速度快,几乎瞬间就能运行起来。
    • 可移植性

      • 容器包含应用及其所有依赖项,可以在不同的环境中运行,避免了“在我机器上可以运行”的问题。
      • 确保应用在开发、测试和生产环境之间的一致性。
    • 隔离性

      • 使用命名空间(Namespaces)技术隔离进程,每个容器有自己独立的进程空间,互不影响。
      • 使用控制组(Cgroups)技术限制容器对系统资源的访问,确保公平分配和资源隔离。
    • 可扩展性

      • 容器可以快速部署,易于复制,支持快速水平扩展。
      • 容器编排工具(如Kubernetes)支持管理大规模容器集群。
    • 版本控制和快速部署

      • 容器镜像可以版本化,方便进行回滚和升级。
      • 快速部署和回滚,支持快速迭代和持续交付。
    • 开发和运维的协作

      • 容器化应用可以与所需的运行环境一同打包,减少了开发和运维之间的差异。
      • 支持开发、测试和运维团队的协同工作。
2.2 容器与虚拟机的区别

容器与虚拟机是两种不同的虚拟化技术,它们在架构、性能、资源利用和部署速度等方面存在一些关键区别。以下是容器与虚拟机之间的主要区别:

  1. 架构和隔离度:
    • 容器: 利用操作系统的内核进行隔离,使用命名空间和控制组等技术确保容器之间的隔离。容器共享宿主机的内核,但有自己的文件系统和进程空间。
    • 虚拟机: 使用完整的操作系统实例,每个虚拟机都有自己的内核、文件系统和用户空间。虚拟机通过Hypervisor进行隔离,它模拟硬件并允许多个操作系统在同一物理服务器上运行。
  2. 资源占用和启动速度:
    • 容器: 共享宿主机的内核,因此资源占用较少,启动速度很快。容器可以在几秒内启动。
    • 虚拟机: 需要模拟整个操作系统,因此资源占用相对较高,启动速度较慢。虚拟机通常需要几分钟才能启动。
  3. 资源利用效率:
    • 容器: 由于容器共享宿主机的内核,资源利用效率较高。容器可以在相同硬件上运行更多的实例。
    • 虚拟机: 每个虚拟机都有自己的操作系统,因此资源利用效率相对较低,需要更多的资源来运行相同数量的实例。
  4. 部署和移植性:
    • 容器: 容器打包应用及其依赖项,具有高度可移植性,可以在不同环境中轻松部署。
    • 虚拟机: 虚拟机包含完整的操作系统,部署时可能需要更多的配置和调整,移植性相对较差。
  5. 管理和维护:
    • 容器: 管理容器相对较简单,可以使用容器编排工具(如Kubernetes)进行自动化管理。
    • 虚拟机: 管理虚拟机涉及更多的操作系统管理任务,例如更新和维护,相对较复杂。

二、镜像(Image)

2.1 镜像的概念和作用

镜像是Docker中的关键概念,它是一个轻量级、独立的可执行软件包,包含运行应用程序所需的一切,包括代码、运行时、库、环境变量和配置文件。镜像是容器的基础,通过镜像可以创建并运行一个或多个容器实例。以下是关于Docker镜像的概念和作用的详细说明:

  1. 概念:
    • Docker镜像是只读的: 一旦创建,镜像就是只读的,不会发生改变。任何对容器的修改都是在容器层进行的,不会影响原始镜像。
    • 层次结构: 镜像由多个层次组成,每个层次代表一个对镜像的修改。这种分层结构使得镜像在构建和分享时更为高效,因为可以共享相同的层次。
  2. 作用:
    • 创建容器实例: 镜像是容器的基础,通过镜像可以创建容器实例。容器实例是镜像的运行时表示,包含了一个可运行的应用程序。
    • 环境一致性: 镜像确保应用程序在不同环境中运行时的一致性,消除了“在我机器上可以运行”的问题。
    • 快速部署和扩展: 镜像可以快速部署,使得应用程序的扩展变得更加容易。多个容器可以使用相同的镜像进行部署,确保一致性和可重复性。
    • 版本管理: 镜像可以版本化,不同版本的镜像可以用于回滚或升级应用程序,支持灵活的版本管理。
    • 分发和共享: 镜像可以保存在镜像仓库中,如Docker Hub,供其他开发者和团队使用。这样的分发方式使得应用程序的共享和交流更加方便。
2. 2 镜像的层次结构

Docker镜像采用层次结构的设计,这种结构使得镜像在构建和分享时更为高效,同时支持镜像的版本控制。以下是镜像层次结构的主要概念:

  1. 基础镜像层:
    • 每个Docker镜像都有一个基础层,该层包含了操作系统的基本文件系统和配置信息。这个基础层通常是一个最小化的Linux发行版,例如Alpine Linux或Ubuntu。
  2. 镜像的多层叠加:
    • 镜像是通过在基础层上叠加多个层次来构建的。每个层次都代表了对镜像的修改,这可以是添加文件、安装软件包、修改配置等。这样的设计允许镜像的复用,多个镜像可以共享相同的基础层。
  3. 每层是只读的:
    • 每个层次都是只读的,一旦创建,就不会发生变化。如果对容器进行了修改,实际上是在添加一个新的可写层,该层叠加在镜像的顶部。
  4. 镜像的ID和标签:
    • 镜像由一个唯一的ID标识,通常是一个长字符串,但为了方便使用,Docker还支持给镜像设置标签。标签是用户友好的标识符,例如ubuntu:20.04,其中的20.04就是标签。
  5. 分层的优势:
    • 分层结构使得镜像的构建更加高效,因为只有发生变化的层次需要重新构建,其他层次可以被重复使用。
    • 分层结构还支持镜像的版本控制,不同版本的镜像可以共享相同的基础层,减小存储和传输的开销。

通过这种分层结构,Docker镜像可以更加高效地存储、传输和分享。这也是Docker支持快速启动和轻量级的原因之一。

三、仓库(Registry)

3.1 仓库的作用和类型

Docker 仓库(Repository)是用于存储和组织 Docker 镜像的地方。仓库可以包含多个镜像,每个镜像可以有不同的标签(Tag)。仓库是分发和分享镜像的中心,提供了一个集中管理镜像的地方。以下是 Docker 仓库的主要作用和一些类型:

  1. 作用:
    • 存储和管理镜像: 仓库用于集中存储和管理 Docker 镜像,使得开发者和团队可以方便地访问和共享这些镜像。
    • 版本控制: 仓库支持对镜像进行版本控制,用户可以通过标签(Tag)来区分不同版本的镜像。
    • 分发和分享: 通过仓库,可以轻松地分享和分发镜像,确保不同的团队和环境可以使用相同的镜像。
  2. 类型:
    • 公共仓库(Public Repository): 这是由 Docker 公司提供的免费仓库服务,最著名的是 Docker Hub。在 Docker Hub 上,开发者可以免费存储和分享公共镜像,也可以购买私有仓库服务用于私有镜像的存储。
    • 私有仓库(Private Repository): 一些组织可能需要将一些敏感或专有的镜像存储在私有仓库中,以保护其知识产权。除了 Docker Hub 提供的私有仓库服务外,还有其他一些第三方提供私有仓库的解决方案。
    • 自托管仓库(Self-hosted Repository): 一些组织可能出于安全或合规性的考虑,选择在自己的内部网络上建立自己的 Docker 仓库。这样可以完全掌控镜像的存储和分发。

Docker 仓库是 Docker 生态系统中的一个重要组成部分,它提供了一个集中化的、可访问的地方,方便开发者存储、分享和分发 Docker 镜像。

3.2 Docker Hub的介绍

Docker Hub是由Docker公司提供的公共Docker镜像仓库服务,是Docker生态系统中最受欢迎的集中存储、分享和管理Docker镜像的平台。以下是关于Docker Hub的主要介绍:

  1. 免费公共仓库:
    • Docker Hub 提供了一个免费的公共仓库,任何人都可以在这里上传、存储和分享Docker镜像。这为开发者提供了一个便捷的方式来获取和共享Docker镜像。
  2. 私有仓库服务:
    • 除了免费的公共仓库外,Docker Hub还提供了私有仓库服务。这使得开发者和组织可以在私有空间中存储敏感或专有的Docker镜像,以确保安全性和合规性。
  3. 版本控制:
    • Docker Hub支持对镜像进行版本控制,开发者可以通过标签(Tag)来标识不同版本的镜像。这有助于确保在不同环境中使用相同的镜像版本。
  4. 自动构建:
    • Docker Hub允许将镜像源代码与版本库关联,通过自动构建功能,可以在每次代码推送时自动构建镜像。这简化了持续集成和持续部署(CI/CD)流程。
  5. 集成GitHub:
    • Docker Hub可以与GitHub等代码托管平台进行集成,使得构建和发布Docker镜像的流程更加无缝。通过GitHub Webhooks,代码变更可以触发Docker Hub上的自动构建。
  6. 组织和团队支持:
    • Docker Hub支持组织和团队的概念,使得多个开发者可以协同工作,共享和管理镜像。这对于团队协作和镜像管理非常有用。
  7. 搜索和浏览功能:
    • Docker Hub提供强大的搜索和浏览功能,使得用户能够轻松找到他们需要的镜像。同时,每个镜像都有详细的描述和文档,方便用户了解和使用。

Docker Hub为Docker用户提供了一个便捷、集中、可扩展的平台,方便存储、分享和管理Docker镜像。它是Docker生态系统中的一个关键组成部分,为开发者提供了许多有用的功能和工具。

四、总结

Docker Hub是Docker生态系统中的核心服务,为开发者提供了免费的公共仓库和私有仓库服务。作为一个集中存储、分享和管理Docker镜像的平台,Docker Hub支持版本控制、自动构建、与代码托管平台的集成,以及组织和团队的协作。它简化了持续集成和部署流程,同时通过强大的搜索和浏览功能,使用户能够方便地找到所需的镜像。提供了详细的镜像描述和文档,使用户能够了解和正确使用镜像。总体而言,Docker Hub是一个方便、可扩展且功能丰富的平台,促进了Docker镜像的存储、共享和管理,为开发者提供了便捷而强大的工具。

相关文章:

《Docker极简教程》--Docker基础--Docker的基本概念

在这篇文章中我们先大致的了解以下Docker的基本概念,在后续的文章中我们会详细的讲解这些概念以及使用。 一、容器(Container) 1.1 容器的定义和特点 容器的定义 容器是一种轻量级、可移植的软件打包技术,用于打包应用及其依赖项和运行环境&#xff0c…...

【AIGC核心技术剖析】DreamCraft3D一种层次化的3D内容生成方法

DreamCraft3D是一种用于生成高保真、连贯3D对象的层次化3D内容生成方法。它利用2D参考图像引导几何塑造和纹理增强阶段,通过视角相关扩散模型执行得分蒸馏采样,解决了现有方法中存在的一致性问题。使用Bootstrapped Score Distillation来提高纹理&#x…...

新版MQL语言程序设计:外观模式的原理、应用及代码实现

文章目录 一、什么是外观模式二、外观模式的实现原理三、外观模式的应用范围四、外观模式应用实例银行系统的设计量化交易系统的设计 五、外观模式的代码实现 一、什么是外观模式 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个…...

Docker 搭建mysql 集群(二)

PXC方案 很明显 PXC方案在任何一个节点写入的数据都会同步到其他节点,数据双向同步的(在任何节点上都可以同时读写) 创建MySQL PXC集群 1 安装PXC镜像 docker pull percona/percona-xtradb-cluster:5.7.21 2 为PXC镜像改名 docker tag pe…...

L1-018 大笨钟-java

输入样例1: 19:05输出样例1: DangDangDangDangDangDangDangDang输入样例2: 07:05输出样例2: Only 07:05. Too early to Dang. java import java.awt.desktop.SystemEventListener; import java.util.Scanner;public class M…...

monaco-editor布局篇(二)-自动换行

monaco-editor的换行方式,主要分为3种情况: 不换行按照编辑器宽度换行按照制定列数换行 主要受wordwrap和wordwrapcolumn控制,具体如下: 取值含义off不换行,会一直滚动on换行,文本将在视区宽度内自动换行…...

08-常用集合(容器)

上一篇: 07-使用Package、Crates、Modules管理项目 Rust 的标准库包含许多非常有用的数据结构,称为集合。大多数其他数据类型表示一个特定值,但集合可以包含多个值。与内置的数组和元组类型不同,这些集合指向的数据存储在堆上&…...

CentOS 中文乱码

CentOS 中文乱码 1、 查看自己系统有没有安装中文语言包,可使用 locale -a 命令列出所有可用的语言环境 如果有中文,则不用安装,如果没有,需要重新安装,使用 yum install kde-l10n-Chinese 2、 修改 i18n 和 locale…...

Java List中对象根据id去重,并处理重复对象的某个字段

List中对象根据id去重 一、需求二、解决 一、需求 参考文章:https://blog.csdn.net/A_Gui_Code/article/details/106978867 对在list集合中对象根据主键id去重,同时需要对重复对象的某个字段进行单独处理。 例如,对象包含字段如下, 当某个对象重复时&a…...

小周学JAVA—八股六

自动装箱和拆箱 Java中基础数据类型与它们对应的包装类见下表: 原始类型包装类型booleanBooleanbyteBytecharCharacterfloatFloatintIntegerlongLongshortShortdoubleDouble 装箱:将基础类型转化为包装类型。 拆箱:将包装类型转化为基础类…...

【深度学习】从0完整讲透深度学习第2篇:TensorFlow介绍和基本操作(代码文档已分享)

本系列文章md笔记(已分享)主要讨论深度学习相关知识。可以让大家熟练掌握机器学习基础,如分类、回归(含代码),熟练掌握numpy,pandas,sklearn等框架使用。在算法上,掌握神经网络的数学原理,手动实…...

题目: 有1234个数字, 组成多个互不相同且无重复数字的三位数? 都是多少?

lua脚本如下 最原始的解题方法 local str{} local i, j, k0, 0, 0 for i1, 4 do for j1, 4 do for k1, 4 do if i~j and i~k and j~k then str[#str1]i..j..k end end end end print("组成的数有"..#str) print(table.unpack(str)) 运行的结果如下 组成的数有24 1…...

由亚马逊云科技 Graviton4 驱动的全新内存优化型实例 Amazon EC2 实例(R8g),现已开放预览

下一代 Amazon Elastic Compute CloudAmazon EC2) 实例的预览版现已公开 提供。全新的 R8g 实例 搭载新式 Graviton4 处理器,其性价比远超任何现有的内存优化实例。对于要求较高的内存密集型工作负载,R8g 实例是不二之选:大数据分析、高性能数…...

sqlserver alwayson部署文档手册

1、ALWAYSON概述 详细介绍参照官网详细文档,我就不在这里赘述了: https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?viewsql-server-ver16 下图显示的是一个包含一个…...

【FFmpeg】ffplay 命令行参数 ① ( 设置播放分辨率 | 禁用 音频 / 视频 / 字幕 选项 )

文章目录 一、ffplay 命令行参数 - 设置播放分辨率1、强制设置通用播放分辨率 -x -y 参数2、命令行示例 - 正常播放视频3、命令行示例 - 强制设置播放分辨率4、设置 YUV 播放分辨率 -video_size 和 像素设置 -pixel_format5、全屏播放 -fs 参数 二、ffplay 命令行参数 - 禁用 音…...

CSS写渐变边框线条

box-sizing: border-box; border-top: 1px solid; border-image: linear-gradient(to right, red, blue) 1;...

【Linux网络编程三】Udp套接字编程网络应用场景

【Linux网络编程三】Udp套接字编程网络应用场景 应用场景一:远程命令执行应用场景二:与Windos端相互通信应用场景三:简单聊天1.多线程化2.输入输出分开 应用场景一:远程命令执行 简单的服务器上一篇已经完成,接下来我…...

计算机网络实验二

目录 实验二 交换机的基本配置 1、实验目的 2、实验设备 (1)实验内容: (2)练习: 1.实验内容一:(交换机的配置方式) 2.实验内容二:(交换机…...

PS一键磨皮插件Delicious Retouch for mac中文 支持PS2024

Delicious Retouch for Mac是一款优秀的Photoshop插件,专注于人像修饰。以下是该插件的一些主要特点和功能: 软件下载:Delicious Retouch for mac中文 支持PS2024 人像修饰工具:Delicious Retouch专注于人像修饰,提供了…...

信息安全管理措施

本文已收录至《全国计算机等级考试——信息 安全技术》专栏 目的 信息是企业存在和发展的重要基础。为规范企业信息管理,保障信息安全,明确信息安全管理的程序、职责、义务和权限,特制定本制度。 职责 网络管理员(委外&#xf…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

拟合问题处理

在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...

python数据结构和算法(1)

数据结构和算法简介 数据结构:存储和组织数据的方式,决定了数据的存储方式和访问方式。 算法:解决问题的思维、步骤和方法。 程序 数据结构 算法 算法 算法的独立性 算法是独立存在的一种解决问题的方法和思想,对于算法而言&a…...

2025-06-08-深度学习网络介绍(语义分割,实例分割,目标检测)

深度学习网络介绍(语义分割,实例分割,目标检测) 前言 在开始这篇文章之前,我们得首先弄明白,什么是图像分割? 我们知道一个图像只不过是许多像素的集合。图像分割分类是对图像中属于特定类别的像素进行分类的过程,即像素级别的…...

【免杀】C2免杀技术(十五)shellcode混淆uuid/ipv6/mac

针对 shellcode 混淆(Shellcode Obfuscation) 的实战手段还有很多,如下表所示: 类型举例目的编码 / 加密XOR、AES、RC4、Base64、Poly1305、UUID、IP/MAC改变字节特征,避开静态签名或 YARA结构伪装PE Stub、GIF/PNG 嵌入、RTF OLE、UUID、IP/MAC看起来像合法文件/数据,弱…...