Docker 29 核心速查
可打印的 Docker 与 Compose 速查表,涵盖构建、容器、网络、存储、安全、排查与清理命令。
Docker CLI 29.7.2 / Compose 5.5.0 / Node 24 打印为 1 页
环境与 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 交互确认后删除未使用的本地匿名卷及其中数据