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

news2025/5/21 2:32:39

文章目录

  • 基础知识扫盲:什么是 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 服务的持久化。

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

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

相关文章

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

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

Android Studio 日志系统详解

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

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

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

【AWS入门】Amazon SageMaker简介

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

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)往往因为插入大量高清图表、扫描图像、公式图等导致文件体积过大,或者毕业学位论文查重要求上…

TDengine 2025年产品路线图

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

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.数据传输之前都要建立…

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

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

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

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

vue2.0 组件生命周期

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

在Linux服务器上部署Jupyter Notebook并实现ssh无密码远程访问

Jupyter notebook版本7.4.2(这个版本AI提示我Jupyter7(底层是 jupyter_server 2.x) 服务器开启服务 安装Jupyter notebook 7.4.2成功后,终端输入 jupyter notebook --generate-config 这将在 ~/.jupyter/ 目录下生成 jupyter_…

GPU 超级节点:AWS Trainium2 UltraServer

目录 文章目录 目录时间线Inferentia1Trainium1Inferentia2Trainium2Trainium2 ServerTrainium2 UltraServerTrainium2 UltraClustersTrainium3AWS GPU 实例矩阵与竞品分析SuperNode RackTrn2 ServerTrn2U Server ScaleUp 网络PCIe Gen5:CPU-Trainium2 ScaleUpNeuro…

git仓库中.git 文件很大,怎么清理掉一部分

查询 .git 文件大小,在 git-bash 里执行(后面有些命令不能执行,也请在 git-bash 里执行) windows11 安装好后右键没有 git bash 命令-CSDN博客 du -sh .git // 592m .git 操作前最好先备份一份,避免推送到远程时出错…

MySQL安装实战指南:Mac、Windows与Docker全平台详解

MySQL作为世界上最流行的开源关系型数据库,是每位开发者必须掌握的基础技能。本指南将手把手带你完成三大平台的MySQL安装,从下载到配置,每个步骤都配有详细说明和截图,特别适合新手学习。 一、Mac系统安装MySQL 1.1 通过Homebre…

Rocky Linux 远程服务器画面GUI传输到本地显示教程——Xming

Rocky Linux 远程服务器画面GUI传输到本地显示教程——Xming 下载Xming安装Xming安装Xming字体Xming的使用设置测试 Xming可以提供GUI环境,在Linux服务器上执行GUI应用时,可通过Xming在Windows上执行GUI操作。 下载Xming 下载链接:https://…

游戏引擎学习第283天:“让‘Standing-on’成为一个更严谨的概念

如果同时使用多个OpenGL上下文,并且它们都有工作负载,GPU或GPU驱动程序如何决定调度这些工作?我注意到Windows似乎优先处理活动窗口的OpenGL上下文(即活动窗口表现更好),挺有意思的…… 当多个OpenGL上下文…