跳到主要内容

📝 Docker 速查表

📋 概览

本速查表汇总了 Docker 日常使用中最常用的命令,按功能分类排列,方便快速查阅。

🖼️ 镜像(Image)

命令说明
docker pull <image>[:tag]拉取镜像
docker push <image>[:tag]推送镜像到仓库
docker build -t <name> .根据当前目录 Dockerfile 构建镜像
docker build -f <file> -t <name> .指定 Dockerfile 构建
docker images / docker image ls列出本地镜像
docker rmi <image>删除镜像
docker rmi $(docker images -q)删除所有镜像(危险!)
docker tag <src> <dst>为镜像打标签
docker save -o <file>.tar <image>将镜像保存为 tar 文件
docker load -i <file>.tar从 tar 文件加载镜像
docker history <image>查看镜像构建历史
docker inspect <image>查看镜像详细信息(JSON)
常用镜像操作示例
# 拉取指定版本镜像
docker pull nginx:1.25-alpine

# 构建并打标签
docker build -t myapp: v1.0 -t myapp:latest .

# 推送多标签镜像
docker push myregistry/myapp:v1.0
docker push myregistry/myapp:latest

# 清理未使用的镜像
docker image prune -a

📦 容器(Container)

命令说明
docker run <image>运行容器(前台)
docker run -d --name <name> <image>后台运行并命名容器
docker run -it <image> bash交互式运行并进入 bash
docker run -p <host>:<container> <image>端口映射运行
docker run -v <host>:<container> <image>挂载数据卷运行
docker ps查看运行中的容器
docker ps -a查看所有容器(含已停止)
docker stop <container>停止容器
docker start <container>启动已停止的容器
docker restart <container>重启容器
docker rm <container>删除容器
docker rm -f <container>强制删除(运行中也可)
docker exec -it <container> bash进入运行中的容器
docker exec <container> <cmd>在容器中执行命令
docker logs <container>查看容器日志
docker logs -f <container>实时跟踪日志
docker logs --tail 100 <container>查看最后 100 行日志
docker diff <container>查看容器文件系统变更
docker top <container>查看容器运行进程
docker stats <container>查看容器资源占用
docker inspect <container>查看容器详细信息(JSON)
docker port <container>查看容器端口映射
docker commit <container> <image>将容器保存为镜像
docker export -o <file>.tar <container>导出容器为 tar 文件
docker import <file>.tar <image>从 tar 文件导入为镜像
docker cp <container>:<path> <host>从容器复制文件到主机
docker cp <host> <container>:<path>从主机复制文件到容器
docker wait <container>阻塞等待容器停止
docker kill <container>强制杀死容器
容器运行常用参数
# 后台运行 + 命名 + 端口映射 + 数据卷 + 环境变量
docker run -d \
--name my-app \
-p 8080:80 \
-v /host/data:/app/data \
-e NODE_ENV=production \
--restart unless-stopped \
my-image:latest

# 资源限制
docker run -d \
--memory=512m \
--cpus=1.5 \
--name limited-app \
my-image:latest

💾 数据卷(Volume)

命令说明
docker volume create <name>创建数据卷
docker volume ls列出所有数据卷
docker volume inspect <volume>查看数据卷详情
docker volume rm <volume>删除数据卷
docker volume prune删除未使用的数据卷
docker volume inspect <volume> --format '{{.Mountpoint}}'查看数据卷挂载点
数据卷操作示例
# 创建并挂载数据卷
docker volume create my-data
docker run -d -v my-data:/data --name app my-image

# 查看数据卷在宿主机的实际路径
docker volume inspect my-data --format '{{.Mountpoint}}'

# 清理无用数据卷
docker volume prune

🌐 网络(Network)

命令说明
docker network create <name>创建网络
docker network ls列出所有网络
docker network inspect <network>查看网络详情
docker network rm <network>删除网络
docker network connect <network> <container>将容器连接到网络
docker network disconnect <network> <container>将容器从网络断开
docker network prune删除未使用的网络
自定义网络示例
# 创建自定义桥接网络
docker network create my-network

# 容器使用自定义网络
docker run -d --network my-network --name web nginx
docker run -d --network my-network --name app my-app

# 容器间可通过容器名互相访问
docker exec app ping web

⚙️ 系统(System)

命令说明
docker system df查看 Docker 磁盘使用情况
docker system prune删除所有未使用资源(镜像、容器、网络)
docker system prune -a删除所有未使用资源(含未被引用的镜像)
docker system info查看 Docker 系统信息
docker system events实时查看 Docker 事件
docker version查看 Docker 版本
docker info查看 Docker 详细信息
磁盘清理示例
# 查看磁盘占用
docker system df

# 清理所有未使用资源(需确认)
docker system prune

# 强制清理所有未使用资源(无需确认)
docker system prune -af

# 清理所有未使用资源 + 构建缓存
docker system prune -af --volumes

🎼 Docker Compose

命令说明
docker compose up启动所有服务(前台)
docker compose up -d后台启动所有服务
docker compose down停止并删除容器、网络
docker compose down -v停止并删除容器、网络、数据卷
docker compose build构建服务镜像
docker compose build --no-cache无缓存构建
docker compose logs查看服务日志
docker compose logs -f实时跟踪服务日志
docker compose ps查看服务状态
docker compose exec <service> bash进入服务容器
docker compose pull拉取服务镜像
docker compose config验证并查看 Compose 配置
Compose 常用操作
# 后台启动所有服务
docker compose up -d

# 查看服务日志(指定服务)
docker compose logs -f web

# 停止并清理
docker compose down

# 重新构建并启动
docker compose up -d --build

# 扩缩容(需配置 deploy 或 scale)
docker compose up -d --scale web=3

📄 Dockerfile 常用指令

指令说明示例
FROM <image>[:tag]指定基础镜像FROM node:20-alpine
WORKDIR <path>设置工作目录WORKDIR /app
COPY <src> <dest>复制文件到容器COPY . .
ADD <src> <dest>复制文件(支持 URL 和解压)ADD https://... /tmp/
RUN <cmd>执行命令(构建时)RUN npm install
CMD <cmd>容器启动默认命令CMD ["node", "server.js"]
ENTRYPOINT <cmd>容器入口点ENTRYPOINT ["docker-entrypoint.sh"]
ENV <key>=<value>设置环境变量ENV NODE_ENV=production
ARG <key>[=<default>]构建时变量ARG VERSION=1.0
EXPOSE <port>声明端口EXPOSE 3000
VOLUME <path>声明数据卷挂载点VOLUME ["/data"]
USER <user>切换用户USER node
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 CMD curl -f http://localhost:8080/health || exit 1健康检查
LABEL <key>=<value>添加元数据LABEL maintainer="dev@example.com"
ONBUILD <instruction>下游构建触发指令ONBUILD COPY . /app
STOPSIGNAL <signal>容器停止信号STOPSIGNAL SIGTERM
SHELL ["executable", "parameters"]覆盖默认 shellSHELL ["/bin/bash", "-c"]
多阶段构建模板(前端)
# ---- 构建阶段 ----
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build

# ---- 生产阶段 ----
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
多阶段构建模板(后端 Node.js)
# ---- 构建阶段 ----
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build

# ---- 生产阶段 ----
FROM node:20-alpine
RUN addgroup -S app && adduser -S app -G app
WORKDIR /app
COPY --from=builder --chown=app:app /app/dist ./dist
COPY --from=builder --chown=app:app /app/node_modules ./node_modules
COPY --from=builder --chown=app:app /app/package*.json ./
USER app
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s CMD node healthcheck.js
CMD ["node", "dist/server.js"]

📋 .dockerignore 模板

# 版本控制
.git
.gitignore
.github
.gitlab-ci.yml

# 依赖(构建时重新安装)
node_modules
vendor
venv
__pycache__

# 构建产物
dist
build
out
*.log
*.tar
*.gz

# 测试与覆盖率
coverage
.nyc_output
test
tests
*.test.js
*.spec.js

# 编辑器配置
.vscode
.idea
*.swp
*.swo
.DS_Store

# 环境变量文件
.env
.env.local
.env.*.local

# CI/CD 配置
Jenkinsfile
Dockerfile
docker-compose*.yml

# 文档
*.md
docs/
LICENSE

🔗 相关资源