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

Docker初学者需要了解的几个知识点(二):Docker、容器镜像

Docker

上一篇文章Docker初学者需要了解的几个知识点(一)中讲到了传统虚拟机、容器。

如果把传统虚拟机比作 “独立出租公寓”(自带完整水电、厨卫、家具,完全独立的小房子),那么容器就是 “青年旅社床位”(只提供睡觉必需的铺盖,共享旅社的大门、走廊、水电总管道),而Docker就是 “管理这些床位的旅社老板”—— 它负责把 “床位”(容器)标准化、打包好、管好隔离和共享,让每个 “住客”(应用)既能独立运行,又不互相打扰,还能高效利用资源。

它的核心作用是:

帮你 “定制床位模板”

你告诉 Docker“我需要一个带枕头、薄被子的床位(应用需要 Python 3.9 和特定库)”,它就会帮你打包出一个 “床位模板”(容器镜像),里面 确切地是你要的东西,不多不少。

按模板 “快速摆好床位”

用这个模板,Docker 能一秒钟给你 “复制” 出一个能直接用的床位(启动容器),你躺上去(运行应用)就行,不用自己铺床(配置环境)。

管好床位秩序

它会给每个床位划好隔板(隔离容器间的资源),确保你在自己床位上的活动(应用运行)不影响别人;同时协调好公共设施的使用(分配 CPU、内存),避免有人占太多资源。

支持 “床位打包带走”

你可以把这个 “床位模板”(镜像)打包,发给任何有 Docker 的 “旅社”(其他电脑 / 服务器),对方的 Docker 能原样摆出同样的床位,你到哪都能睡同一个 “床”(应用在任何环境都能一致运行)。

简单说,Docker 就是专门用来创建、管理、搬运 “容器床位” 的工具—— 让应用能 “轻量、快速、一致” 地运行,省去所有环境配置的麻烦。

容器镜像

容器镜像:应用的 “打包快照”,就是停止运行的容器

更通俗点,就像外卖里的 “预制菜套餐”,里面有做好的菜、加热说明、甚至配套的餐具。你拿到后不用买菜、切菜、调味,直接按说明加热就能吃,而且不管谁吃,味道都和预制时一样。容器镜像就是给软件用的 “预制菜套餐”,确保软件在任何地方都能 “即开即用”,还不会出岔子。

核心特点:

  • 只读模板:镜像一旦创建就固定不变,就像拍好的照片不能修改,确保了环境的一致性。
  • 可复制传播:你可以把这张 “快照” 复制给别人,对方拿到后,就能基于它快速创建出一模一样的容器。
  • 分层复用:镜像的分层复用就像 “搭积木”—— 底层积木(基础环境)大家共用,上层积木(应用代码)各自添加,既省材料又方便修改,还能快速拼出新东西。

容器镜像的 “分层复用” 就像 “预制菜的共享食材包”——

 

假设你要做两种预制菜套餐:

 
  • 套餐 A:西红柿炒鸡蛋 + 米饭
  • 套餐 B:番茄牛腩 + 米饭
 

这两个套餐里都需要 “米饭”,如果分开打包,每套都得单独装一份米饭,既占空间又浪费成本。但用 “分层复用” 的思路,你可以:

 
  1. 先做一个 “基础层”:专门打包一份优质米饭(对应镜像的 “底层基础环境”,比如操作系统的基础文件、常用工具库);
  2. 套餐 A 在基础层上,加一层 “西红柿炒鸡蛋”(对应应用的依赖和代码);
  3. 套餐 B 在同一个基础层上,加一层 “番茄牛腩”(另一个应用的依赖和代码)。
 

这样一来:

 
  • 共享基础,省空间:两份套餐共用一份米饭(基础层),不用重复打包,节省了储存空间(对应镜像的硬盘占用减少);
  • 改层不影响整体:如果想换一种米饭(升级基础层),只需要更新一次 “基础层”,套餐 A 和套餐 B 都会自动用上新米饭,不用单独改每个套餐;
  • 快速组合新套餐:以后想做 “青椒肉丝 + 米饭” 的套餐 C,直接复用现成的米饭基础层,只需要加一层 “青椒肉丝” 就行,不用从头做。

Docker 镜像 

  • Docker 镜像是 “容器镜像” 的一种,而且是最主流、最常用的一种。
  • 容器镜像是更宽泛的统称,除了 Docker 镜像,还有其他技术(如 Podman、containerd 等)支持的镜像,但本质上都是 “打包应用环境的镜像”。

简单说,容器镜像是容器的 “源头”,有了它,容器才能快速启动、一致运行,而 Docker 正是管理这些镜像和容器的工具 —— 通过镜像打包应用,通过容器运行应用。 

http://www.dtcms.com/a/305211.html

相关文章:

  • 2025年运维相关面试题
  • 前端手写贴
  • 北方公司面试记录
  • A1324LLHLX-T Allegro:高精度线性霍尔效应传感器 ±1%精度+4.5mV/G超高灵敏度
  • python优秀案例:基于机器学习算法的景区旅游评论数据分析与可视化系统,技术使用django+lstm算法+朴素贝叶斯算法+echarts可视化
  • 域名常见问题集(九)——域名市场介绍
  • VNC和RPC加固措施
  • Redis+JWT 认证管理最佳实践
  • MybatisPlus-20.插件功能-通用分页实体与MP转换
  • 推动技术的发展和创新:编程是IT行业中最为基础和核心的技能之一
  • 计算机网络五层模型
  • echarts(4.9.0)x轴标签过长,截取指定长度显示三个点,鼠标放上去显示完整标签示例
  • “影子插桩”:利用 LLVM 在二进制层面对 dlsym 调用做无痕监控(C/C++实现)
  • 前端基础之《Vue(26)—Vue3两种语法范式》
  • C++(面向对象之继承、多态)
  • C++20协程实战:高效网络库、手机终端、多媒体开发开发指南
  • 嵌入向量与向量数据库:AI时代的语义搜索革命
  • 【Git】分支
  • 前端接入DeepSeek
  • 数据结构(6)单链表算法题(下)
  • 如何使用Spring AI框架开发mcp接口并发布成微服务
  • C51 中断
  • 笔试——Day22
  • 【Android】日期选择器
  • 镁金属接骨螺钉注册检测:骨科植入安全的科学基石
  • 【面试】软件测试面试题
  • ICT模拟零件测试方法--电阻测试
  • 集成电路学习:什么是WDT看门狗定时器
  • Java中的异常判断以及文件中的常用方法及功能
  • UCLAMP0501P.TCT SEMTECH:超低电容TVS二极管 0.25pF+20kV防护!