docker基本概念和镜像制作


虚拟机:宿主机 → Hypervisor(虚拟化层) → 每个 VM 都有完整独立 OS
是完整的虚拟电脑,有独立的 CPU、内存、硬盘、操作系统。占用资源多,一个宿主机只能启动少量的虚拟机。

容器:是进程级隔离,共享宿主机内核,只打包应用 + 依赖。占用资源小,所以一个宿主机可以启动很多容器。

Docker是一个用于 构建 运行 传送 应用程序的平台
build run share

Docker是容器的一种实现

镜像是一个模版,容器就是这个模版的实例

docker镜像的内容

Docker 容器的底层规则是:所有容器共享宿主机的 Linux 内核,镜像只提供用户空间。

你这个理解很直观,但其实Docker镜像的实际占用空间常常远超出“仅模板”的预期,核心原因是镜像的“模板”特性和它的存储方式、层级结构密切相关,并非简单的“轻量文本模板”。

容器和Dockerfile

步骤
1 创建一个Dockerfile
2 使用Dockerfile构建镜像
3 使用镜像创建和运行容器

  • 第一层:基础系统层(如Ubuntu 22.04,约70MB)
  • 第二层:安装Python(约100MB)
  • 第三层:安装项目依赖(如Pandas、Numpy,约50MB)
  • 第四层:添加应用代码(几KB)

Dockerfile包括的内容
1 精简版的操作系统
2 应用程序运行时环境。比如nodejs,java ,python
3 应用程序

  • 比如springboot打包好的jar包,第三方依赖等。
  • 应用程序配置文件,环境变量等

Docker client和Docker Server

你通过Docker Client(客户端) 输入指令,指令会发送给Docker Server(服务端 / 守护进程) 执行,Server 是真正干活的角色,Client 只是 “指令输入器”。下面我用新手能看懂的方式拆解两者的工作机制:
镜像生成后完全存储在 Docker Server 所在的宿主机上,和 Docker Client 没有任何存储关联 ——Client 只是 “指令传递者”,Server 才是 “镜像 / 容器的存储和管理中心”。

总结

  1. Docker镜像的“模板”是包含完整运行环境的文件系统模板,而非纯文本配置,因此基础镜像和依赖是体积的核心来源;
  2. 镜像体积大的主要原因是基础镜像臃肿、分层冗余、包含构建工具/临时文件;
  3. 优化核心思路:用轻量基础镜像 + 合并层清理冗余 + 多阶段构建剥离构建环境。

简单来说:镜像的“模板”特性决定了它是“运行环境的模板”,而非“代码的模板”,做好分层和清理才能让它真正轻量化。

posted @ 2026-02-25 22:28  向着朝阳  阅读(15)  评论(0)    收藏  举报