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

含义:\

示例(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"]
转载请注明出处