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与云规则

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