与容器(container)有什么区别?)
在 Docker 中镜像Image和容器Container是两个核心概念它们之间的关系可以类比为“类Class”与“对象Object”或者**“安装包/模板”与“运行实例”**。以下是它们的主要区别1. 核心定义镜像 (Image)是一个只读的模板。包含创建 Docker 容器所需的代码、运行时环境、库、环境变量和配置文件。它是分层的Layered每一层代表一次构建操作如安装软件、复制文件这些层可以复用从而节省空间。状态静态的、不可变的除非重新构建。容器 (Container)是镜像的可运行实例。当你启动一个镜像时Docker 会在镜像的只读层之上添加一个可写的容器层。容器拥有自己的文件系统、网络接口和进程空间。状态动态的、可变的可以启动、停止、移动、删除。2. 主要区别对比表特性镜像 (Image)容器 (Container)性质静态模板只读动态实例可读写生命周期长期存在直到被删除临时存在启动即运行停止即闲置可修改性不能直接修改需通过Dockerfile重新构建可以修改文件、进程但修改通常随容器删除而丢失除非挂载卷资源占用占用磁盘空间占用磁盘空间容器层 内存 CPU数量关系一个镜像可以启动多个容器一个容器只能基于一个镜像启动时类比类 (Class) / 安装包 / 电影光盘对象 (Object) / 运行中的程序 / 正在播放的电影3. 工作流程示例拉取/构建镜像你从 Docker Hub 拉取一个nginx镜像或者通过Dockerfile构建一个自定义镜像。此时你只有一个静态文件镜像。启动容器你运行命令docker run nginx。Docker 引擎读取nginx镜像。在镜像顶部添加一个可写的容器层。分配网络、IP 地址。启动 Nginx 进程。此时容器诞生了。运行中你可以在容器内创建文件、修改配置。这些修改只存在于该容器的可写层中。提交可选如果你希望将容器内的修改保存下来可以使用docker commit将其保存为一个新的镜像。销毁当你删除容器时容器层包括你在里面做的所有修改会被删除但原始的镜像依然保留在本地可以随时再次启动新的容器。4. 常用命令对比管理镜像docker images列出本地所有镜像。docker pull name下载镜像。docker build -t name .构建镜像。docker rmi id删除镜像。管理容器docker ps列出运行中的容器。docker ps -a列出所有容器包括已停止的。docker run image从镜像启动新容器。docker start/stop/restart id控制容器状态。docker rm id删除容器。总结镜像是“蓝图”容器是“房子”。你可以用同一张蓝图镜像建造无数座房子容器每座房子内部可以有不同的装修运行时数据但拆除房子不会影响蓝图本身。