Docker 镜像与容器的区别
Docker 入门时最容易混淆的是镜像和容器。简单说,镜像是静态模板,容器是镜像运行后的实例。
镜像是分层文件系统
镜像由多层只读层组成。Dockerfile 中的每一步通常都会形成一层。分层的好处是可以复用,也方便构建缓存。
例如多个镜像都基于同一个基础镜像时,底层内容不需要重复下载。
容器是运行实例
容器基于镜像启动,并在只读镜像层之上增加一个可写层。程序运行时产生的临时文件、修改内容通常会落在这个可写层里。
如果删除容器,这个可写层也会消失。因此需要持久化的数据应放到 volume 或绑定挂载中。
镜像不应该保存运行状态
镜像适合保存程序、依赖、默认配置,不适合保存运行过程中变化的数据。这样才能保证同一个镜像在不同环境中行为一致。
构建与运行分离
构建镜像时关注“如何得到可运行环境”,运行容器时关注“如何提供配置和数据”。这两个阶段分开后,升级、回滚和迁移都会更清晰。
小结
镜像像模板,容器像进程实例。镜像负责可重复分发,容器负责实际运行,数据持久化则应交给挂载或外部存储。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xiaobai050!