跳转至

Docker 镜像和容器的区别?

一、类比

  • 镜像(Image):类,只读模板。
  • 容器(Container):对象,镜像运行时的实例。

一个镜像可以启动多个容器。

二、镜像

  • 只读,分层存储。
  • 每层是文件系统的变更(如 apt install、COPY 代码)。
  • 通过 Dockerfile 构建。
FROM openjdk:11-jre
COPY app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

三、容器

  • 镜像启动后的运行实例。
  • 在镜像层之上加一个可写层,容器内修改都在这层。
  • 停止/删除容器,可写层丢失;数据要挂载 volume。

四、生命周期

docker build    -> 生成镜像
docker run      -> 启动容器
docker stop     -> 停止
docker rm       -> 删除容器
docker rmi      -> 删除镜像

五、核心概念

概念 作用
镜像层 只读,分层复用
容器层 可写,每次启动新建
Volume 数据持久化
Network 容器间通信

六、为什么轻量

  • 共享宿主机内核,不需要 Guest OS。
  • 镜像分层,相同层只存一份。
  • 启动快(秒级),比 VM 小得多。

面试加分

  • Docker vs VM:VM 是硬件级虚拟化,Docker 是进程级隔离,共享内核。
  • 镜像不要太大:用多阶段构建、.dockerignore、基础镜像选 slim。