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

【入门|Docker】基础知识扫盲:什么是 Docker?

文章目录

  • 基础知识扫盲:什么是 Docker?
    • Docker 是什么?
    • Docker 核心组件
    • Docker 与虚拟机的区别
    • Docker 在现代开发中的核心角色
    • Docker 的局限性

基础知识扫盲:什么是 Docker?

最近打算开始系统性地学习与云计算相关的技术。提到云计算,我立刻能够想到的两个关键技术是 Docker 和 Kubernetes,目前各个企业在招聘需求中也通常会将「掌握 Docker 与 Kubernetes 等云原生相关技术」作为加分项。

Kubernetes 与我们普通开发者的距离比较远,它是一个自动化的容器编排平台,用于支持容器化应用的自动部署、健康状况检查以及动态扩缩容,从描述上来说它显然是一项用在大型项目中的技术。但是 Docker 与 Kubernetes 不同,在后端开发的学习过程中,我们有大量的机会接触 Docker,比如我们可以通过 Docker 快速拉取一个 MySQL 数据库的 Image,并启动一个 Container 运行 MySQL 服务,只要在命令中配置好数据持久化的文件位置,就可以快速地启动一个 MySQL 服务,而无需关注操作系统以及环境依赖的细节。

尽管对于开发的学习者而言,我们有大量的机会接触 Docker,但我发现我对 Docker 这个概念本身并没有很深入了解,比如什么是 Docker Image,什么是 Docker Container,二者的区别是什么?比如如何编写 Dockerfile,Docker Compose 的作用是什么?比如 Docker 和虚拟机技术有什么关系?二者的主要区别是什么?

因此通过这个专栏,我打算深入学习一下 Docker 这项技术,现在先从最基本的概念解释开始,对 Docker 基础知识进行扫盲,欢迎交流。
在这里插入图片描述

Docker 是什么?

Docker 是开源的「容器化平台」,允许开发者将应用程序及其依赖(代码、运行时、系统工具等)打包到一个轻量级、可移植的「容器」当中。容器共享主机操作系统内核,但通过隔离机制保证「进程独立性」,从而实现“一次构建,处处运行”。

Docker 核心组件

  • Docker Image:只读模版,定义容器的初始化状态(如 Ubuntu + Nginx + 你的业务代码);
  • Docker Container:Docker Image 的运行实例,包含一个可写层,进程结束后容器终止(但 Image 仍然保留)。需要注意的是,一个 Image 可以同时有多个 Container,甚至可以通过组件实现多个 Container 所提供服务的负载均衡;
  • Dockerfile:描述如何构建一个 Docker Image;
  • Docker Hub:公共镜像仓库,提供官方(如 MySQL)和社区镜像,通过 docker pull 命令可以从 Docker Hub 拉取镜像。

Docker 与虚拟机的区别

特性Docker 容器虚拟机
虚拟化层级进程级虚拟化(共享 Host 的 OS 内核)硬件级虚拟化
启动速度秒级分钟级
资源占用极低(MB 级别)高(GB 级别,因为需要完整 OS)
隔离性进程级隔离(Namespace + Cgroups)硬件级隔离(独立 OS 内核,安全性更高,因此 Kubernetes 集群的工作节点也运行在真实的物理主机或虚拟机上)
适用场景微服务、CI/CD、云原生强隔离需求(如多租户、传统应用)

Docker 在现代开发中的核心角色

解决“环境一致性”问题
在开发的学习阶段,Docker 的这一特性的优势就已经非常明显了,比如我希望在本地构建一个 RocketMQ 服务,我可以直接从 Docker 拉取相关的镜像,做好持久化,即可搭建起这一项服务。具体来说:

  • 通过镜像确保环境完全一致;
  • 跨团队协作:新成员只需要docker-compose up即可复现完整开发环境。

微服务架构基石
每个微服务都可以进行容器化,之后通过 Docker 运行:

  • 快速部署:单个服务更新无需重启整个应用;
  • 资源隔离:避免服务间依赖冲突。

DevOps 与 CI/CD 的核心工具

  • 代码提交到 Github Repo 之后自动构建镜像;
  • 镜像推送到 Repo 后,Kubernetes 可以自动拉取并滚动更新。

看起来上述的两项特性确实非常适用于真实的开发与部署环境。

云原生生态的关键
Docker 可与 Kubernetes、Service Mesh、Serveless 等技术结合,构成了现代云原生架构的基石。

Docker 的局限性

  • 安全性:容器内核级共享,隔离性弱于 VM 的硬件级隔离;
  • Windows/macOS:依赖虚拟机层;
  • 持久化存储:需显式配置 Volume 或绑定挂载,才能完成 Docker 服务的持久化。

相关文章:

【入门|Docker】基础知识扫盲:什么是 Docker?

文章目录 基础知识扫盲:什么是 Docker?Docker 是什么?Docker 核心组件Docker 与虚拟机的区别Docker 在现代开发中的核心角色Docker 的局限性 基础知识扫盲:什么是 Docker? 最近打算开始系统性地学习与云计算相关的技术…...

如何利用 Java 爬虫获得某书笔记详情:实战指南

在知识分享和学习的领域,许多平台提供了丰富的书籍笔记和学习资源。通过 Java 爬虫技术,我们可以高效地获取这些笔记的详细信息,以便进行进一步的分析和整理。本文将详细介绍如何利用 Java 爬虫获取某书笔记详情,并提供完整的代码…...

【MYSQL】基本查询,表的增删查改

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 |🗃️ mysql 摘要:本文详细介绍了MySQL中的CRUD操作(创…...

在嵌入式系统中, 一般链路层断开多久,断开TCP为好

一、典型场景与推荐策略 1. 实时性优先(工业控制、自动化设备) 需求:快速释放资源,避免因等待重传浪费内存或阻塞任务。 策略: 立即断开:在lwip_netif_link_callback中检测到链路断开后直接关闭TCP连接&a…...

Android Studio 日志系统详解

文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…...

基于matlab的D2D 功率控制仿真

基于MATLAB的D2D(Device-to-Device)功率控制仿真示例,包含系统建模、功率控制算法实现和性能分析。该仿真以蜂窝网络为背景,重点关注D2D用户间的干扰管理和功率优化。 1. 系统模型与参数设置​ clc; clear; close all;%% 参数配置…...

互联网大厂Java面试:从基础到复杂场景的技术挑战

互联网大厂Java面试:从基础到复杂场景的技术挑战 场景描述 在一家知名互联网大厂的会议室里,面试官严肃地坐在桌子的一侧,而对面则是一位充满喜感的应聘者——谢飞机。面试官准备了一系列关于Java技术栈的提问,涵盖了从基础到复…...

使用Redission来实现布隆过滤器

简述布隆过滤器 布隆过滤器是一种概率型数据结构,它可以用来判断一个元素是否在一个集合中。我们当时使用的是Redisson实现的布隆过滤器。它的底层原理是,先初始化一个比较大的数组,里面存放的是二进制0或1。一开始都是0,当一个k…...

为 Windows 和 Ubuntu 中设定代理服务器的详细方法

有时下载大模型总是下载不出来,要配置代理才行 一、Windows代理设置 ① 系统全局代理设置 打开【设置】→【网络和Internet】→【代理】。 在【手动设置代理】下,打开开关,输入: 地址:10.10.10.215 端口:…...

Feign异步模式丢失上下文问题

Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时,代码中使用了RequestContextHolder去获取上下文的数据,当我们执行原来可以执行的业务时发现报了空指针异常或数据为空,这是为什么呢? 原理解释 …...

OpenCV阈值处理完全指南:从基础到高级应用

引言 阈值处理是图像处理中最基础、最常用的技术之一,它能够将灰度图像转换为二值图像,为后续的图像分析和处理奠定基础。本文将全面介绍OpenCV中的各种阈值处理方法,包括原理讲解、代码实现和实际应用场景。 一、什么是阈值处理&#xff1…...

【AWS入门】Amazon SageMaker简介

【AWS入门】Amazon SageMaker简介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 机器学习(Machine Learning,简称ML) 是当代流行的计算机科学分支技术。通常,人们在本地部署搭建环境,以满足机器学习的要求。 AWS…...

ArcGIS Pro 3.4 二次开发 - 内容

环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 内容1 工程1.1 创建一个空工程1.2 使用指定名称创建新工程1.3 使用Pro的默认设置创建新工程1.4 使用自定义模板文件创建新工程1.5 使用 ArcGIS Pro 提供的模板创建工程1.6 打开现有工程1.7 获取当前工程1.8 获取当前工程的…...

如何在 MongoDB 中设计文档结构?与关系型数据库的表结构设计有何不同?

在 MongoDB 中设计文档结构是一个核心且重要的环节,它直接影响应用的性能、可扩展性和可维护性。 MongoDB 文档结构设计原则与方法 MongoDB 的核心思想是数据如何被应用访问,就如何存储它。 嵌入 (Embedding / Denormalization) vs. 引用 (Referencing…...

MYSQL 故障排查与生产环境优化

目录 一.前置知识点 1. 案例需求 (1)mysql 常见故障解决 (2)mysql 性能优化 2.案例实施思路 (1)单库常见故障分析 (2)主从常见故障分析 (3)从几个不同…...

解决使用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss“, timezone = “GMT+8“)时区转换无效的问题

前言 对于一些时间的字段,我们从数据库查询出来通常需要转换后返回给前端展示,前端需要的格式一般为yyyy-MM-dd HH:mm:ss,可以通过JsonFormat注解来作转换和时区转换。 问题场景 原因 LocalDateTime类本身不带时区信息所以转换无效 解决办…...

计算机网络概要

⽹络相关基础知识 协议 两设备之间使⽤光电信号传输信息数据 要想传递不同信息 那么⼆者ᳵ就需要约定好的数据格式 层 封装 继承 多态是计算机的性质 它们⽀持了软硬件分层的实现 同层协议可以ᳵ接通信 同层协议ᳵ不直接通信 是各⾃调⽤下层提供的结构能⼒完成通信 分层…...

Word压缩解决方案

Word压缩解决方案:基于图片压缩的 .docx 优化实践 📌 背景 在日常科研写作或项目文档整理中,Word 文档(.docx)往往因为插入大量高清图表、扫描图像、公式图等导致文件体积过大,或者毕业学位论文查重要求上…...

Spring Boot开发—— 整合Lucene构建轻量级毫秒级响应的全文检索引擎

文章目录 一、为什么选择 Lucene?轻量级搜索的底层密码二、核心原理:Lucene 的倒排索引2.1 倒排索引:速度之源2.2 段合并优化策略三、Spring Boot集成Lucene实战3.1 依赖配置3.2 实体与索引设计3.3 核心索引服务(含异常处理)3.4 使用示例(测试类)四、高级优化技巧4.1 索…...

TDengine 2025年产品路线图

TDengine OSS 之 2025 年年度路线图如下表所示。 季度功能2025Q1 虚拟表查询能力:REGEXP、GREATEST、LEAST、CAST 函数支持判断表达式、单行选择函数的其他列值、INTERP 支持插值时间范围存储能力:支持将查询结果写入超级表、超级表支持 KEEP 参数、STM…...

vue3中element-plus修改el-tooltip的宽度

注意选中的样式是 :deep(.el-popper .is-dark){max-width:30% !important; } 也有可能不需要后面的 .is-dark,看情况而定,总之不是.el-tooltip 修改el-tooltip的显示高度参考:前端字数太多使用el-table设置show-overflow-tooltip显示不下&a…...

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践 服务器脚本运行方式命令行直接执行nohup后台执行进程 Screen概述安装基本操作命令启动 Screen退出当前会话(不终止进程)查看所有会话重连会话关闭会话 常用快捷键典型使用场景…...

计算机网络 - 2.基础协议

1.TCP协议 1.TCP(Transmission Control Protocol):传输控制协议2.TCP协议是一种面向连接的、可靠的、 基于字节流的传输层通信协议 1.面向连接:两个使用TCP协议的应用(通常一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接2.可靠的 1.数据传输之前都要建立…...

Kafka消息路由分区机制深度解析:架构设计与实现原理

一、消息路由系统的核心架构哲学 1.1 分布式系统的三元悖论 在分布式消息系统的设计过程中,架构师需要平衡三个核心诉求:数据一致性、系统可用性和分区容忍性。Kafka的分区路由机制本质上是对CAP定理的实践解: 一致性维度:通过…...

机器学习中采样哪些事

在机器学习中采样主要分为两种,过采样(Oversample)和欠采样(Undersample)。过采样就是通过增加少数类样本的数量来平衡数据集。而欠采样就是通过减少多数类样本的数量来平衡数据集。 通常在进行采样中以下是几种常用的方法: 1. 随机采样 随…...

初识css,css语法怎样学好css以及常见问题与避坑

一、CSS 是什么? CSS(Cascading Style Sheets)是一种用于描述网页文档(HTML 或 XML)呈现样式的语言。它负责控制网页元素的视觉表现,如颜色、字体、布局等,使内容与展示分离。 二、CSS 语法结构…...

MySQL如何快速删除数据库中所有表数据

首先运行下面指令生成TRUNCATE TABLE语句 -- 生成的TRUNCATE TABLE语句 SELECT CONCAT(TRUNCATE TABLE , table_name, ;) FROM information_schema.tables WHERE table_schema axe_elder; 再运行下面指令禁用外键关联检查 -- 禁用外键检查 SET FOREIGN_KEY_CHECKS 0; 运…...

计算机视觉与深度学习 | Python实现ARIMA-LSTM时间序列预测(完整源码和数据)

ARIMA-LSTM混合模型 1. 环境准备2. 数据生成(示例数据)3. 数据预处理4. ARIMA建模5. LSTM残差建模6. 混合预测7. 结果可视化完整代码说明1. **数据生成**2. **ARIMA建模**3. **LSTM残差建模**4. **混合预测**5. **性能评估**参数调优建议扩展方向典型输出以下是使用Python实现…...

Axure疑难杂症:垂直菜单展开与收回(4大核心问题与专家级解决方案)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:垂直菜单展开与收回 主要内容:超长菜单实现、展开与收回bug解释、Axure9版本限制等问题解…...

vue2.0 组件生命周期

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...