Docker 常用命令速查表(含数据持久化)
本文整理了最常用、最实用、面向新手友好的 Docker 命令,
并**重点补充了"文件映射 & 数据保存(Volume)"**相关用法,
既可当学习笔记,也可当日常开发速查手册。
📦 一、核心概念速览
概念 说明
Image(镜像) 类似"安装包",通过 docker build
或 docker pull 获得
Container(容器) 镜像运行起来的实例
Volume(数据卷) Docker 管理的持久化存储
Bind Mount(目录映射) 本机目录直接映射到容器
Docker Hub 公共镜像仓库(类似 GitHub)
🐳 二、Docker 基础命令
# 查看 Docker 版本
docker version
# 查看 Docker 信息
docker info🖼️ 三、镜像(Image)相关命令
查看本地镜像
docker images从远程仓库拉取镜像
docker pull nginx
docker pull node:18
docker pull mysql:8.0构建镜像
docker build -t my-app:1.0 .删除本地镜像
docker rmi my-app:1.0导出镜像为文件
docker save -o my-app.tar my-app:1.0从文件导入镜像
docker load -i my-app.tar🚀 四、容器(Container)相关命令
运行容器(基础)
docker run -d -p 3000:3000 my-app:1.0查看运行中的容器
docker ps查看所有容器
docker ps -a查看容器日志
docker logs <container_id>进入容器内部
docker exec -it <container_id> /bin/sh停止容器
docker stop <container_id>启动已停止的容器
docker start <container_id>删除容器
docker rm <container_id>💾 五、文件映射 & 数据保存(重点)
结论:容器删除后,内部数据默认会丢失。
要持久化数据,必须使用:Bind Mount(目录映射) 或
Volume(数据卷)。
✅ 方式 1:本机目录映射(Bind Mount,推荐用于开发)
docker run -d -p 3000:3000 -v $(pwd)/data:/app/data my-app:1.0含义:\
- 左侧
$(pwd)/data:你电脑上的文件夹\ - 右侧
/app/data:容器内路径\ - 容器在
/app/data写入的文件,会实时保存在本机data/目录。
示例(Node):
const fs = require("fs");
fs.writeFileSync("./data/test.txt", "hello docker volume");文件会出现在:
./data/test.txt
✅ 方式 2:Docker 数据卷(Volume,推荐用于生产)
创建数据卷:
docker volume create my-data查看数据卷:
docker volume ls使用数据卷运行容器:
docker run -d -p 3000:3000 -v my-data:/app/data my-app:1.0查看数据卷详情:
docker volume inspect my-data✅ 常见场景:MySQL 数据持久化(必会)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql-data:/var/lib/mysql mysql:8.0即使删除容器:
docker rm <container_id>数据仍保存在 mysql-data 数据卷中。
✅ 常用 Volume 管理命令
# 查看所有数据卷
docker volume ls
# 创建数据卷
docker volume create my-data
# 查看数据卷详情
docker volume inspect my-data
# 删除数据卷
docker volume rm my-data
# 清理未使用的数据卷(谨慎)
docker volume prune🔁 六、镜像仓库(Docker Hub)相关命令
docker login
docker tag my-app:1.0 yourname/my-app:1.0
docker push yourname/my-app:1.0
docker pull yourname/my-app:1.0🧹 七、清理相关命令(释放磁盘)
docker container prune
docker image prune
docker system prune -a
⚠️ docker system prune -a
会删除未使用的容器、镜像、网络和缓存,慎用。
📁 八、Dockerfile 常用指令速览
指令 作用
FROM 指定基础镜像
WORKDIR 设置工作目录
COPY 复制文件到容器
RUN 构建镜像时执行命令
EXPOSE 声明端口
CMD 容器启动命令
ENV 设置环境变量
🎯 九、开发必背 5 条命令
docker build -t my-app:1.0 .
docker run -d -p 3000:3000 my-app:1.0
docker ps
docker logs <container_id>
docker stop <container_id>🎯 十、✅ Dockerfile 教学版(逐行带注释)
# ============================================================
# 【Dockerfile 教学版】
# 场景:Node + Express 后端服务
# 目标:让你真正“看懂 Dockerfile 在干什么”
# ============================================================
# ==============================
# ① 基础镜像(Base Image)
# ==============================
# FROM = 你站在谁的肩膀上
# node:18-alpine 代表:
# - Node.js 18
# - 基于 Alpine Linux(体积小、适合生产)
FROM node:18-alpine
# ==============================
# ② 设置工作目录
# ==============================
# WORKDIR = 容器里的“工作目录”
# 类似于:cd /app
# 之后所有命令(COPY、RUN、CMD)默认在这个目录执行
WORKDIR /app
# ==============================
# ③ 先拷贝 package 文件(优化构建缓存)
# ==============================
# 为什么要先拷贝 package.json?
# 👉 如果你的业务代码变了,但依赖没变,
# Docker 就可以“复用缓存”,构建更快
COPY package.json package-lock.json ./
# ==============================
# ④ 安装依赖
# ==============================
# RUN = 在镜像构建阶段执行的命令
# 这里相当于在容器里执行:
# npm install
RUN npm install
# (可选:如果是生产环境推荐)
# RUN npm ci --production
# ==============================
# ⑤ 拷贝项目代码
# ==============================
# COPY <宿主机路径> <容器路径>
# . 表示当前目录(项目根目录)
# 作用:把你的代码放进镜像里
COPY . .
# ==============================
# ⑥ 暴露端口(说明文档,不会自动映射)
# ==============================
# EXPOSE 只是“声明”
# 真正映射端口要靠:
# - docker run -p
# - 或 docker compose ports
EXPOSE 3000
# ==============================
# ⑦ 设置容器启动命令
# ==============================
# CMD = 容器启动时默认执行的命令
# 下面等价于:
# node server.js
CMD ["node", "server.js"]
转载请注明出处