编程 docker init / debug / scout:3 条塞进 CLI 的子命令,各自解决什么问题

2026-10-14 23:43:55

docker init / debug / scout:3 条塞进 CLI 的子命令,各自解决什么问题

Docker 把几件原本靠额外工具或脚本完成的事做成了 docker 的子命令,随 Docker Desktop 提供。信源是 Docker 官方 CLI 文档(docs.docker.com)。这里把 docker init、docker debug、docker scout 的用法、机制和实际会踩的坑过一遍。

docker init:在项目目录里生成容器化起步文件

docker init [OPTIONS]

唯一选项是 --version,显示 init 插件版本。

在项目目录里以交互问答方式生成下面这些文件,默认值都给好了:

  • .dockerignore
  • Dockerfile
  • compose.yaml
  • README.Docker.md

文件已存在时会警告并询问是否覆盖全部;如果已存在的是 docker-compose.yaml 而不是 compose.yaml,可以用 docker-compose.yaml 这个文件名覆盖。覆盖后的文件不可恢复,要留底就先改名或复制一份。

可选模板:

模板备注
ASP.NET Core
Go会问 Go 版本、main 包的相对目录、服务监听端口
Java (Maven)打成 uber jar
Node会问 Node 版本、包管理器(yarn/npm)、启动前是否跑 build、build 输出目录、启动命令、端口
PHP with Apache适合纯 PHP 与 Composer 项目,生成后需手动在 Dockerfile 里补所需 PHP 扩展
Python
Rust
Other通用起点

会自动检测平台,比如 PHP 项目在列表里显示 (detected)。生成完成后提示用 docker compose up --build 启动。

docker debug:slim 容器没有 shell 也能进去

debug [OPTIONS] {CONTAINER|IMAGE}

docker exec -it my-app bash 在 slim 容器里会直接失败——没有 shell,常用工具也被删干净了。docker debug 在这种情况下仍然可用,且不需要修改镜像,也不会修改镜像。

机制上它自带一个 toolbox,预装 vim、nano、htop、curl 等;要追加工具用内置的 install,包来自 https://search.nixos.org/packages 。shell 支持 bash / fish / zsh,默认自动检测。

内置工具:

命令作用
install [tool...]从 Nix 包源安装
uninstall [tool...]卸载
entrypoint打印 / 检查(lint)/ 运行镜像的 ENTRYPOINT 与 CMD 组合结果,可配 --print、--run
builtins显示自定义内置工具

边界要分清楚:

  • 对镜像和已停止容器,退出 shell 后所有改动全部丢弃,任何时刻都不会影响真实的镜像/容器。
  • 对运行中或已暂停的容器,文件系统改动对容器直接可见。
  • /nix 目录对真实镜像/容器永远不可见。

选项:

选项说明
--shellauto/bash/fish/zsh,默认 auto
-c, --command直接执行命令而非进入交互,类似 bash -c,适合脚本化
--host连接指定 docker socket,如 ssh://root@example.org、unix:///some/path/docker.sock,可远程调试

几个例子:

docker debug my-app
docker debug hello-world          # 不需要先 pull
docker debug nginx                # 进去后 install nmap
docker debug --command "cat /usr/share/nginx/html/index.html" nginx

docker debug nginx 里 install nmap 装上的工具,换到其它镜像仍然保留。

docker scout:镜像的漏洞、SBOM 与仓库监视

docker scout [command]

子命令(部分):

子命令用途
attestation管理镜像背书
cache管理缓存与临时文件
compare对比两个镜像差异(实验)
config配置
cves显示制品里的 CVE
enroll组织接入
environment实验
integration列出/配置/删除集成
policy对镜像评估本地 Rego 策略(实验)
push把镜像/image index 推到 Scout
quickview镜像快速概览
recommendations基础镜像更新与修复建议
repo仓库级开关
sbom生成/展示镜像 SBOM
stream实验
version版本
vex管理 VEX 背书
watch监视 registry 仓库并推送到 Scout

日常最常用的四个:quickview 看镜像概览,cves 列漏洞,sbom 出软件物料清单,watch 盯住 registry 仓库。

为什么这三条值得放进日常流程

docker init 把脚手架生成拉进 CLI,docker debug 解决了 slim 容器没法 exec bash 的老问题,docker scout 把漏洞扫描和 SBOM 从外围脚本变成了子命令。init 与 debug 由 Docker Desktop 提供,不是纯 CLI 插件,环境里装没装 Desktop 会直接影响能不能用。

官方文档

  • docker init:https://docs.docker.com/reference/cli/docker/init/
  • docker debug:https://docs.docker.com/reference/cli/docker/debug/
  • docker scout:https://docs.docker.com/reference/cli/docker/scout/
复制全文 生成海报 新命令 Docker 容器 运维 命令行

推荐文章

程序员茄子在线接单