Skip to content

参考

基于 Docker(Engine 2x / BuildKit 默认)· 核于 2026-07

速查

  • 本页含:CLI 命令速查(容器/镜像/构建/网络/卷/系统)、Dockerfile 指令表、docker run 常用参数、常见坑、权威链接。
  • 镜像名[registry/]namespace/repo:tag[@sha256:digest],缺省 :latest
  • 最常敲五条docker run / ps / exec -it / logs -f / build -t
  • 一键清理docker system prune -a --volumes(慎用,删所有未用镜像/容器/网络/卷)。
  • 构建后端:BuildKit 默认;多平台/高级特性走 docker buildx build
  • 看状态docker info(引擎)、docker version(客户端+服务端)、docker system df(磁盘)。

一、CLI 命令速查

容器生命周期

命令作用
docker run [opts] 镜像 [cmd]创建并启动容器
docker create / start只创建 / 启动已创建的
docker ps / ps -a运行中的 / 含已停止的
docker stop / start / restart停 / 起 / 重启
docker kill立即 SIGKILL
docker rm [-f] 容器删容器(-f 强删运行中的)
docker exec -it 容器 sh在运行容器内执行命令
docker logs -f 容器看日志(-f 跟踪)
docker inspect 容器完整 JSON 元数据
docker stats实时资源占用
docker top 容器容器内进程列表
docker cp 容器:路径 本地容器与宿主之间拷文件
docker port 容器查端口映射
docker rename 旧 新改容器名
docker update --memory 512m 容器改运行中容器的资源限额

镜像

命令作用
docker pull 镜像:tag拉镜像
docker images / image ls列本地镜像
docker build -t 名:tag .构建(. 是上下文)
docker tag 源 目标打别名/标 registry
docker push 镜像推到 registry
docker rmi 镜像删镜像
docker history 镜像看每层来历
docker save -o x.tar 镜像导出为 tar
docker load -i x.tar从 tar 导入
docker image inspect 镜像镜像元数据
docker login / logout登录 / 登出 registry

构建(BuildKit / buildx)

命令作用
docker build -t app:1.0 .基础构建(默认 BuildKit)
docker build --target build .只构建到指定 stage
docker build --no-cache .不用缓存全量重建
docker build --pull .强制拉最新基础镜像
docker build --build-arg KEY=val .传构建参数
docker build --secret id=x,src=./x .传构建期密钥
docker buildx build --platform linux/amd64,linux/arm64 -t app .多平台构建
docker buildx build --cache-from --cache-to导入/导出缓存

网络

命令作用
docker network ls列网络
docker network create app-net建自定义 bridge
docker network inspect app-net看网段 / 接入的容器
docker network connect app-net 容器把容器接入网络
docker network disconnect app-net 容器断开
docker network prune删无用网络

命令作用
docker volume create 名建命名卷
docker volume ls列卷
docker volume inspect 名看挂载点 / 驱动
docker volume rm 名删卷
docker volume prune删所有未用卷

系统 / 清理

命令作用
docker info引擎详情(存储驱动/cgroup/数量)
docker version客户端 + 服务端版本
docker system dfDocker 磁盘占用
docker system prune删停止容器 + 悬空镜像 + 无用网络
docker system prune -a --volumes连未用镜像和卷一起删(慎用)
docker container prune删所有已停止容器
docker image prune [-a]删悬空 [或全部未用] 镜像

Compose V2(docker compose 子命令)

命令作用
docker compose up -dcompose.yaml 起全部服务
docker compose down [-v]停并删(-v 连卷)
docker compose ps / logs -f状态 / 日志
docker compose build构建服务镜像
docker compose exec 服务 sh进某服务容器

Compose V2 是 Docker CLI 插件,命令是 docker compose(有空格),已取代旧的独立 docker-compose(连字符)。

二、Dockerfile 指令速查

指令作用关键点
FROM基础镜像 / 开新 stage首条有效指令;AS 名 命名 stage
RUN构建期执行命令产层;&& 合并;BuildKit 支持 --mount
CMD默认命令 / 参数docker run 参数覆盖;仅最后一条生效
ENTRYPOINT固定入口程序docker run 参数追加其后;配 CMD 给默认
COPY拷贝本地文件 / 跨 stage 产物首选;--from / --chown / --chmod
ADD拷贝 + 解压 tar + 拉 URL/Git仅需要这些特性时用;配 --checksum
ARG构建期变量--build-arg 传;不入镜像;可先于 FROM
ENV环境变量入镜像、运行时存在;覆盖同名 ARG
WORKDIR工作目录自动创建;别用 RUN cd
EXPOSE声明监听端口仅文档,不发布;发布靠 -p
VOLUME声明挂载点JSON 数组形式;宿主路径不能在此定
USER切换用户安全基线非 root
LABEL元数据用 OCI 规范 key
HEALTHCHECK健康探测--interval/--timeout/--retries/--start-period
STOPSIGNAL停止信号默认 SIGTERM
SHELLshell form 用的默认 shell覆盖 /bin/sh -c
ONBUILD被当基础镜像时才触发的指令做 base 镜像用

exec form vs shell form

形态写法是否过 shell变量展开信号(PID 1)
exec form["exe","arg"]不展开✅ 应用是 PID 1
shell formexe arg是(sh -c)展开❌ sh 是 PID 1

三、docker run 常用参数

参数作用
-d后台运行
-it交互 + 分配终端(进 shell 必备)
--rm退出即删容器
--name 名命名容器
-p 主机:容器发布端口
-P随机发布所有 EXPOSE 端口
-e KEY=val / --env-file设环境变量 / 从文件读
-v 卷:/路径[:ro]挂卷 / 绑定挂载
--mount type=...明确挂载语法(推荐)
--network 名指定网络
-w /path设工作目录
-u 用户指定运行用户
--memory / --cpus资源限额
--restart重启策略:no/on-failure/always/unless-stopped
--read-only只读根文件系统
--cap-drop / --cap-add丢弃 / 添加 capability
--security-opt=no-new-privileges禁止提权

四、常见坑速查

现象 / 坑原因与解法
容器数据一删就没可写层不持久;持久数据放 volume
EXPOSE 了却访问不到EXPOSE 只是声明;发布要 docker run -p
同网容器 ping 不通对方名字用了默认 bridge(无 DNS);建自定义网络用容器名
docker stop 要等 10 秒才停用了 shell form,PID 1 是 sh 收不到信号;改 exec form
改代码每次都重装依赖层序错了;先 COPY 依赖清单装依赖,再 COPY 源码
RUN rm 删了文件镜像却没变小删在新层;要在同一 RUN 内装完就清
密钥被 docker history 看到别用 ARG/ENV 传密钥;用 RUN --mount=type=secret
alpine 上原生模块 / DNS 行为异常musl libc 与 glibc 差异;换 -slim 验证
镜像巨大(几百 MB~GB)未用多阶段 / 基础镜像太大 / 没 .dockerignore
-p 0.0.0.0:5432:5432 库对外网暴露Docker 直改 iptables 绕过 UFW;内部服务别发布,绑 127.0.0.1
容器里是 root,安全审计不过USER;运行时 --user--cap-drop=ALL
latest 导致构建不可复现@sha256: digest
构建上下文很大、上传很慢.dockerignore 排除 node_modules/.git/产物
docker build 报缺 BuildKit 特性加首行 # syntax=docker/dockerfile:1;或 DOCKER_BUILDKIT=1

五、组件与版本速记(2026-07)

组件角色版本(Engine 29)
Docker Engine整体(dockerd + CLI + 构建)29.x
dockerd守护进程,管镜像/网络/卷/API-
containerd容器/镜像生命周期,行业标准运行时v2.2.x
runc底层 OCI 运行时,真正建容器进程v1.3.x
containerd-shim每容器一个,容器"养父",解耦守护进程-
BuildKit默认构建后端默认(23.0+)
Compose V2docker compose 子命令CLI 插件
镜像存储containerd snapshotter(29.0+ 新装默认)overlayfs

六、权威链接