📝 Docker 核心概念速查表(新手必藏版)
一、镜像(Image)
- 定义:容器的「模板/只读快照」,包含运行服务所需的代码、依赖、环境变量、启动命令。
- 类比:就像「系统安装盘」,可以反复创建新容器。
- 关键特性:
- 只读不可修改,修改需重新构建新镜像。
- 分层存储(Layer),复用底层文件,节省存储空间。
- 常用命令:
dockerpull nginx:latest# 拉取镜像dockerimages# 查看本地镜像dockerrmi 镜像名/ID# 删除镜像
二、容器(Container)
- 定义:镜像运行后的可读可写实例,是真正提供服务的进程单元。
- 类比:就像「用系统盘安装好的正在运行的电脑」。
- 关键特性:
- 一个镜像可启动多个容器,彼此隔离互不影响。
- 生命周期:创建 → 启动 → 运行 → 停止 → 删除。
- 设计原则:一个容器只跑一个主进程(单进程模型)。
- 常用命令:
dockerrun-d--namemy-nginx nginx# 后台启动容器dockerps# 查看运行中容器dockerexec-it容器名sh# 进入容器终端dockerlogs 容器名# 查看容器日志dockerrm-f容器名# 强制删除容器
三、网络(Network)
- 定义:Docker 提供的虚拟网络,用于容器之间、容器与宿主机之间的通信。
- 核心模式:
模式 特点 bridge默认模式,容器在独立内网,通过端口映射与外部通信,适合单机部署。 host容器共享宿主机网络栈,性能最高,但隔离性差。 none完全禁用网络,容器无法与外界通信,适合高安全需求场景。 overlay跨主机容器通信,用于集群环境(如 Docker Swarm/K8s)。 - 关键特性:
- 容器间可通过容器名互相访问(Docker 内置 DNS 解析)。
- 端口映射:
宿主机端口:容器内端口(如8081:80)。
- 常用命令:
dockernetworkls# 查看所有网络dockernetwork create my-network# 创建自定义网络dockernetwork connect 网络名 容器名# 将容器加入网络
四、数据卷(Volume)
- 定义:独立于容器的持久化存储,用于保存容器运行时产生的数据(避免容器删除后数据丢失)。
- 类比:就像「外接硬盘」,容器可以挂载使用,容器删除后数据依然存在。
- 关键特性:
- 数据与容器生命周期解耦,支持多个容器共享数据。
- 可挂载宿主机目录或 Docker 管理的 Volume。
- 常用命令:
dockervolume create my-volume# 创建数据卷dockerrun-vmy-volume:/data...# 挂载数据卷到容器dockervolumels# 查看数据卷
五、Docker Compose
- 定义:用于定义和运行多容器应用的工具,通过
docker-compose.yml配置文件管理服务。 - 类比:就像「服务编排脚本」,一键启动/停止/重建整个应用栈。
- 核心优势:
- 用 YAML 配置所有服务(Nginx/PHP/MySQL 等),版本可控。
- 自动创建网络、数据卷,简化多容器部署。
- 常用命令:
dockercompose up-d# 后台启动所有服务dockercomposeps# 查看服务状态dockercompose down-v# 停止并删除容器、网络、数据卷dockercompose logs 服务名# 查看指定服务日志
六、核心概念关系图(一句话记忆)
镜像(模板) → 容器(运行实例) → 网络(通信桥梁) → 数据卷(持久化存储)
Docker Compose 是「指挥家」,统一调度所有容器协同工作。
七、新手避坑提醒
- 容器≠服务器:不要在一个容器里跑多个服务,遵循「单进程」原则。
- 数据不存容器内:重要数据必须挂载到 Volume,否则容器删除后数据丢失。
- 端口映射分清:
宿主机端口:容器内端口,避免端口冲突。 - 容器名是通信关键:容器间用「容器名:容器内端口」访问,而非 IP。