镜像是只读分层模板,容器是其上附加可写层的运行实例;镜像由多层只读文件系统叠加构成,共享基础层以节省空间,容器启动时在顶部添加可写层,所有运行时修改均发生于此,删除容器不影響镜像。
镜像和容器是 docker 的两个基石,理解它们的关系,关键在于抓住“模板”和“实例”这个核心逻辑:镜像是一份只读的、可复用的环境快照;容器是基于这份快照启动起来的一个独立、可运行的进程环境。
镜像:静态的、只读的运行模板
镜像不是单个大文件,而是一组分层叠加的只读文件系统。每一层记录一次变更(比如安装一个软件、复制一个配置),底层可以被多个镜像共享,节省空间和构建时间。它打包了应用代码、运行时(如 Python 或 JDK)、依赖库、环境变量、启动命令等全部内容。你不能直接运行镜像,也不能修改它——它就像一张刻录好的光盘,只能用来安装(即创建容器)。
容器:动态的、可读写的运行实例
容器是镜像在运行时的具象化。当你执行 docker run 时,Docker 会做几件事:从镜像各层叠加出完整文件系统,在最上面加一层可读写层(所有运行时改动,比如日志写入、临时文件,都发生在这里);分配独立的网络栈、进程空间和文件系统视图;然后启动你定义的主进程(如 python app.py 或 nginx -g daemon off;)。每个容器彼此隔离,互不影响,哪怕来自同一个镜像。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
从镜像创建并运行容器的典型流程
整个过程分三步走,常用命令清晰对应:
-
获取镜像:用 docker pull 从仓库下载,例如:
docker pull nginx:alpine -
创建并启动容器:用 docker run 一键完成,例如:
docker run -d -p 8080:80 --name myweb nginx:alpine
其中 -d 后台运行,-p 映射端口,--name 指定名字,最后是镜像名和标签。 - 验证与交互:用 docker ps 查看运行中容器;用 docker exec -it myweb sh 进入容器内部调试;用 docker logs myweb 查看输出日志。
补充说明:镜像怎么来?
除了拉取现成镜像,你还可以自己构建:
- 写一个 Dockerfile,明确写出基础镜像、要安装什么、复制哪些文件、暴露什么端口、运行什么命令;
- 执行 docker build -t myapp .,Docker 就按步骤逐层构建出新镜像;
- 之后就可以用 docker run myapp 启动属于你的容器了。

















