Docker 的镜像Image和容器Container是其最核心的两个概念理解它们的关系是掌握 Docker 的关键。简单来说镜像是静态的模板而容器是这个模板运行起来的动态实例。这非常类似于面向对象编程中的“类”与“对象”的关系。镜像 (Image)镜像是一个只读的模板它打包了运行一个应用所需的一切代码、运行时环境、系统工具、系统库和设置。静态性镜像本身是只读的无法被修改。分层结构镜像由多个只读层Layer叠加而成。例如一个 Web 应用的镜像可能由“操作系统层”、“语言环境层”、“依赖库层”和“应用代码层”堆叠而成。这种分层设计使得镜像非常高效不同的镜像可以共享相同的基础层节省存储空间和传输时间。用途用于构建和分发应用。你可以从 Docker Hub 这样的仓库拉取docker pull现成的镜像也可以自己通过 Dockerfile 构建。容器 (Container)容器是镜像运行时的实例。当你使用一个镜像启动一个容器时Docker 会在镜像的只读层之上添加一个可写的容器层。动态性容器是一个正在运行的进程拥有独立的用户空间、网络和文件系统视图。你可以启动、停止、移动或删除容器。可写层所有对容器文件系统的修改如生成日志、写入数据都发生在这个顶层的可写层。当容器被删除时这个可写层也会被删除而底层的镜像保持不变。用途用于实际运行和部署应用。一个镜像可以同时运行出多个相互隔离的容器。核心区别总结特性镜像 (Image)容器 (Container)本质静态的、只读的模板动态的、运行中的实例类比类 (Class)对象 (Object)文件系统只读由多个层堆叠而成在镜像之上增加一个可写层生命周期持久化存储除非被显式删除短暂的可以随时创建和销毁常用命令docker images,docker pull,docker builddocker run,docker ps,docker stop,docker rm一个形象的比喻如果把 Docker 镜像比作一个光盘那么容器就是用这张光盘安装并运行起来的操作系统。你可以用同一张光盘镜像在多台电脑上安装出多个独立的操作系统容器。