Docker 29 核心速查

可打印的 Docker 与 Compose 速查表,涵盖构建、容器、网络、存储、安全、排查与清理命令。

Docker CLI 29.7.2 / Compose 5.5.0 / Node 24 打印为 1 页
下载 .md

环境与 Context

docker version 显示客户端与所连接引擎的版本
docker compose version 显示已安装的 Compose 插件版本
docker info 检查引擎、存储、网络与运行时配置
docker context show 输出默认使用的 Context
docker context ls 列出 Context 及其守护进程端点
docker context use production 把 production 设为后续命令的默认 Context

Dockerfile 基础

FROM node:24-bookworm-slim@sha256:ba849c60be29959425b8734d57b8b4b7d56f98edd9504c9af091d5281095a71e 从 2026-09-04 验证过的 Node 24 清单开始构建
WORKDIR /app 创建或选择供后续指令使用的工作目录
COPY --chown=node:node package.json package-lock.json ./ 先复制依赖元数据,再复制频繁变动的源码
RUN --mount=type=cache,target=/root/.npm npm ci --omit=dev 严格按锁文件安装,并复用 npm 下载缓存
COPY --chown=node:node app.mjs ./ 复制运行时源码,并在同一层设置所有者
USER node 让后续指令与容器使用非 root 的 node 用户
ENTRYPOINT ["node", "app.mjs"] 不经过 shell 启动,让 Node 主进程直接接收信号

构建镜像

docker build --check . 对当前构建上下文执行 Dockerfile 构建检查
docker build --pull -t catalog:1.4.0 . 刷新基础镜像引用,并构建带标签的本地镜像
docker build --no-cache -t catalog:cold . 不使用缓存,重新执行构建指令
docker build --target test -t catalog:test . 构建到名为 test 的阶段
docker buildx build --platform linux/amd64,linux/arm64 --push -t registry.example.com/catalog:1.4.0 . 构建并推送一个多平台镜像引用
docker buildx imagetools inspect registry.example.com/catalog:1.4.0 检查仓库清单及其中的平台条目
docker image history --no-trunc catalog:1.4.0 完整审查每个镜像层对应的命令

镜像与仓库

docker pull node:24-bookworm-slim 下载标签当前指向的清单与缺失镜像层
docker image ls --digests 列出本地镜像及可用的仓库摘要
docker image inspect catalog:1.4.0 读取镜像配置与内容标识符
docker tag catalog:1.4.0 registry.example.com/catalog:1.4.0 为同一个本地镜像添加包含仓库地址的标签
docker login registry.example.com 通过已配置的凭据流程登录仓库
docker push registry.example.com/catalog:1.4.0 上传带标签的清单与缺失镜像层
docker image rm catalog:1.4.0 删除这个本地标签及不再被引用的镜像数据

容器生命周期

docker run --name catalog-api -d -p 127.0.0.1:3000:3000 catalog:1.4.0 创建后台容器,并把端口限制在宿主机本地
docker ps --filter name=catalog-api 列出名称与 catalog-api 匹配的运行中容器
docker ps -a --filter status=exited 列出状态为 exited 的已停止容器
docker stop --time 30 catalog-api 发送停止信号,强制终止前等待三十秒
docker start catalog-api 重新启动已有的停止容器,不重新创建它
docker wait catalog-api 等待容器停止并输出其退出码
docker rm catalog-api 删除已停止容器及其可写层

检查与排错

docker logs --tail 100 -f catalog-api 输出最近一百行日志并继续跟随
docker exec -it catalog-api sh 在运行中的容器内启动交互式 shell
docker inspect --format '{{json .State.Health}}' catalog-api 仅以 JSON 输出容器健康状态
docker top catalog-api 显示宿主机可见的容器内进程
docker stats --no-stream catalog-api 获取一次 CPU、内存、网络与 I/O 用量快照
docker diff catalog-api 列出相对镜像基线的文件系统变更
docker cp catalog-api:/app/report.json ./report.json 把一个文件从容器复制到当前目录

网络与端口

docker network create catalog-net 创建带内置 DNS 的用户自定义桥接网络
docker run --name catalog-db -d --network catalog-net postgres:18-alpine@sha256:d3e1620b530c944afa6e887d22eb899824da68e19c52024bf98f5220c88a65b2 在应用网络中启动固定摘要的数据库,不向宿主机发布端口
docker run --name catalog-api -d --network catalog-net -p 127.0.0.1:3000:3000 catalog:1.4.0 加入同一网络,并只发布应用端口
docker network connect catalog-net metrics-agent 把已有容器接入该网络
docker network inspect catalog-net 检查已连接容器、地址与网络选项
docker port catalog-api 3000 显示容器端口 3000 对应的宿主机绑定

卷与挂载

docker volume create catalog-data 创建由 Docker 管理的命名卷
docker volume ls 列出本地命名卷与匿名卷
docker run --name catalog-db -d --mount type=volume,src=catalog-data,dst=/var/lib/postgresql/data postgres:18-alpine@sha256:d3e1620b530c944afa6e887d22eb899824da68e19c52024bf98f5220c88a65b2 把数据库文件持久化到容器生命周期之外
docker run --rm --mount type=bind,src=/srv/catalog/config,dst=/app/config,readonly catalog:1.4.0 以只读方式把一个宿主机目录暴露到明确路径
docker volume inspect catalog-data 检查卷驱动、挂载点、标签与选项
docker volume rm catalog-data 永久删除未使用的卷及其数据

运行时隔离

docker run --rm --user 10001:10001 catalog:1.4.0 用明确的非 root UID 与 GID 覆盖镜像用户
docker run --rm --read-only --tmpfs /tmp catalog:1.4.0 把根文件系统设为只读,并提供可写的内存临时目录
docker run --rm --cap-drop=ALL --cap-add=NET_BIND_SERVICE catalog:1.4.0 丢弃 Linux capability,再只恢复低端口绑定权限
docker run --rm --security-opt no-new-privileges=true catalog:1.4.0 阻止进程通过 exec 获得额外权限
docker run --rm --memory 512m --cpus 1.0 catalog:1.4.0 限制容器的内存与 CPU 配额
docker run --rm --pids-limit 200 catalog:1.4.0 限制容器可以创建的进程数量
docker run --rm --network none catalog:1.4.0 启动一个无法连接外部网络的容器

Compose 服务模型

build: { context: . } 从当前 Compose 项目上下文构建该服务
ports: ['127.0.0.1:3000:3000'] 仅在宿主机回环地址发布端口 3000
depends_on: { db: { condition: service_healthy } } 等待 db 通过健康检查,再创建该服务
volumes: ['catalog-data:/var/lib/postgresql/data'] 把命名卷挂载到数据库数据目录
read_only: true 把服务容器的根文件系统设为只读
tmpfs: [/tmp] 为服务提供可写的内存临时存储
init: true 运行小型 init 进程,转发信号并回收子进程

Compose 工作流

docker compose config --quiet 静默解析并校验最终 Compose 模型
docker compose config --services 输出配置解析后的服务名称
docker compose pull 拉取已声明服务所需的镜像
docker compose up --build --wait 构建并创建服务,等待服务运行或变为健康
docker compose ps 显示当前 Compose 项目中的容器
docker compose logs --tail 100 -f catalog 输出 catalog 服务最近一百行日志并继续跟随
docker compose down 删除项目容器与网络,但保留命名卷

清理前检查

docker system df -v 删除 Docker 对象前查看详细磁盘占用
docker image ls --filter dangling=true 列出可按悬空镜像规则清理的无标签镜像
docker volume ls --filter dangling=true 列出未被任何容器引用的卷
docker container prune --filter until=24h 删除创建时间超过二十四小时的已停止容器
docker image prune 交互确认后删除悬空镜像
docker buildx prune --filter until=24h 交互确认后删除超过二十四小时的构建缓存
docker volume prune 交互确认后删除未使用的本地匿名卷及其中数据

向你的 AI 准确表达

规则包 · DevOps 与云

供编码智能体使用的 DevOps 与云 规则

下载本方向的常见陷阱与审查项,文件格式可直接供编码智能体读取。