这是 Docker 最核心、也最容易混掉的一组概念。
#1. image —— 装柜模板,不是正在跑的货柜
Docker 官方文档对镜像的描述,核心意思就是:
- 镜像是用来创建容器的
- 镜像由层组成
- 镜像本身是构建产物,不是运行中的实例
类比到港口:
Image
= 一套已经封装好的装柜标准
= 货物清单 + 环境配置 + 启动方式
= “按这个模板,就能造出一只可运行货柜”比如:
docker pull nginx:latest这不是“启动了 nginx”,只是把 nginx 这套标准货柜模板拉到本地。
#2. container —— 真正跑起来的一只货柜
容器是镜像的运行时实例。
docker run -d --name web -p 8080:80 nginx:latest这时候才是:
- 拿
nginx:latest镜像 - 创建一个名为
web的容器 - 在后台运行
- 把宿主机
8080映射到容器80
类比成港口语言:
Image = 货柜模板
Container = 按模板装出来并发车的一只货柜所以你必须记住这句:
镜像是“静态模板”,容器是“运行实例”。
#3. 一张图彻底搞清楚
Dockerfile
↓ build
Image
↓ run
Container
↓ stop / rm
容器停掉或删除