veggiemonk/awesome-docker · 上手攻略
- 仓库:veggiemonk/awesome-docker
- 链接:https://github.com/veggiemonk/awesome-docker
- 分类:skill(开发者工具 · Docker 生态导航)
- 作者:Jay
- 更新:2026-07-14
一、是什么
awesome-docker 是一个精选的 Docker 生态资源列表(Awesome List),由 Veggiemonk 维护,收录了与 Docker 容器技术相关的优质开源项目、工具、服务和学习资源。它不是某个具体的软件,而是一份" Docker 生态地图",帮助开发者快速找到适合自己场景的工具。
GitHub Stars 36422(持续增长中),是 Docker 领域最有影响力的 Awesome 列表之一。
官网:https://awesome-docker.com(指向 GitHub)
二、解决什么问题
Docker 生态工具众多且碎片化:
- 构建镜像用什么?buildx?BuildKit?earthly?Kaniko?
- 安全扫描用 Trivy 还是 Clair 还是 Grype?
- 无 Dockerfile 怎么构建 Go 镜像?用 ko!
- 镜像太大怎么压缩?DockerSlim、img、hadolint……
awesome-docker 把这些工具按类别整理好,让你不再迷失在工具海洋里,需要什么去查对应分类就有完整的候选列表和简短说明。
三、快速安装
这不是一个需要安装的软件,而是一个导航资源库。
方式一:直接浏览 GitHub
https://github.com/veggiemonk/awesome-docker
方式二:克隆到本地(方便离线查阅)
git clone https://github.com/veggiemonk/awesome-docker.git
cd awesome-docker
# 用任意 Markdown 阅读器打开 README.md
cat README.md | less
方式三:在 VS Code / Typora 中打开
支持 TOC 自动生成目录结构,体验接近 Wiki。
四、核心内容速览
awesome-docker 的内容按以下大类组织:
4.1 Engine & Runtime(容器引擎与运行时)
| 工具 | 说明 |
|---|---|
| colima | macOS/Linux 上的容器运行时,最小化配置,开箱即用 |
| containerd | CNCF 孵化的容器运行时,Docker 的底层支撑 |
| podman | 无守护进程 daemonless 容器,Docker 替代 |
| gVisor | Google 沙箱容器运行时,比 gVisor 更安全 |
| youki | Rust 实现的 OCI runtime |
| runc | OCI 规范参考实现,Docker 底层工具 |
推荐组合(macOS 开发环境):
brew install docker colima
colima start --arch aarch64 --vm-type=vz --vz-rosetta
docker info # 验证
4.2 Building Images(镜像构建)
Builder(构建工具)
| 工具 | 说明 | 特色 |
|---|---|---|
| buildx | Docker 官方插件,多平台构建 | 背书广泛,原生集成 |
| BuildKit | 并行构建,高效缓存 | Dockerfile 无关 |
| earthly | Dockerfile + Makefile 语法融合 | 可复现构建 |
| DockerSlim | 自动缩减镜像体积 | 可压缩 30x+ |
| ko | Go 应用无需 Dockerfile | 极简主义 |
| img | 无守护进程构建 | 无 root 依赖 |
| Hadolint | Dockerfile Linter | 最佳实践检查 |
快速体验 BuildKit:
docker buildx install # 安装 buildx
docker buildx create --use # 创建并使用新的 builder
# 在 Dockerfile 中启用 BuildKit
# DOCKER_BUILDKIT=1 docker build .
# 或在 docker-compose.yml 中:
# version: "3.9"
# services:
# app:
# build:
# builder: default
# dockerfile: Dockerfile
# labels:
# org.opencontainers.artifact.created: "2024-01-01T00:00:00Z"
DockerSlim 压缩示例:
docker-slim build --http=false my-fat-image:latest
# 输出:my-fat-image.slim:latest(体积大幅缩小)
Hadolint 检查 Dockerfile:
docker run --rm -i hadolint/hadolint < Dockerfile
# 或安装本地工具
brew install hadolint
hadolint Dockerfile
Base Images(基础镜像)
| 镜像 | 说明 |
|---|---|
| distroless | 无 OS 的语言镜像,极简安全 |
| Chainguard Images | 签名+SBOM,最小化 + 安全 |
| Wolfi | 专为容器设计的非 glibc 发行版 |
💡 生产推荐:Java/Node.js/Python 服务优先考虑 distroless 或 Chainguard Images,镜像体积可减少 10 倍以上,且不含多余攻击面。
4.3 Registry(镜像仓库 & CLI)
| 工具 | 说明 |
|---|---|
| Harbor | CNCF 毕业项目,企业级私有镜像仓库 |
| crane | 轻量镜像管理 CLI |
| skopeo | 无 daemon 的镜像复制工具 |
| oras | OCI 兼容的任意制品推送 |
| JFrog Artifactory | 通用制品库,商业级 |
常用 Registry 操作:
# 用 crane 复制镜像
crane copy source:image:tag dest:image:tag
# 用 skopeo 复制镜像(无需 daemon)
skopeo copy docker://source/image:tag docker://dest/image:tag
# 查看镜像元数据
crane manifest my-registry.com/image:tag | jq
4.4 Image Scanning & SBOM(安全扫描)
| 工具 | 说明 |
|---|---|
| Trivy | Aqua Security 开源,简单全面 |
| Grype | Syft 配套,CLI 友好 |
| Docker Scout | Docker 官方 CLI 内置 |
| Clair | 静态漏洞分析,CNCF 项目 |
Trivy 扫描示例:
# 安装
brew install trivy
# 扫描本地镜像
trivy image my-app:latest
# 扫描 Dockerfile(预防性)
trivy config Dockerfile
# 扫描文件系统
trivy fs /path/to/project
Grype 配合 Syft 生成 SBOM:
# 生成 SBOM
syft my-app:latest -o cyclonedx-json > sbom.json
# 基于 SBOM 扫描漏洞
grype sbom:sbom.json
4.5 Orchestration(编排)
| 工具 | 说明 |
|---|---|
| Kubernetes | 容器编排标准 |
| Docker Swarm | Docker 原生编排,门槛低 |
| Rancher | K8s 管理平台 |
| Nomad | HashiCorp 出品,简单orch |
| kompose | Docker Compose → K8s YAML |
kompose 转换示例:
# 安装
brew install kompose
# Docker Compose 转 K8s
kompose convert -f docker-compose.yml
4.6 Observability(可观测性)
- 日志:Fluentd、ELK Stack、Loki
- 指标:cAdvisor、Prometheus、DataDog
- 追踪:Jaeger、Zipkin
4.7 Security(安全)
- cosign — 镜像签名与验证
- in-toto — 软件供应链安全框架
- policy-controller — K8s 准入控制强制签名
签名与验证示例(cosign):
# 安装
brew install cosign
cosign generate-key-pair
# 签名镜像
cosign sign --key cosign.key my-registry.com/my-app:latest
# 验证
cosign verify --key cosign.pub my-registry.com/my-app:latest
4.8 Developer Workflow(开发工作流)
- CI/CD:GitHub Actions、Docker Hub Build、GitLab CI
- 开发环境:Dev Container、Go MySQL Browser 等
- Testing:Testcontainers(用真实容器跑集成测试)
4.9 学习资源(Learning Resources)
awesome-docker 收录了大量高质量教程、书籍、博客和视频,涵盖: - Docker 入门到进阶路线 - Kubernetes 学习路径 - 安全最佳实践 - Raspberry Pi / ARM 架构容器化
五、典型适用场景
| 场景 | 推荐关注章节 |
|---|---|
| 搭建本地 Docker 开发环境(Mac/Linux) | Engine & Runtime → colima |
| 多平台镜像构建 | Building Images → buildx, buildKit |
| 压缩大镜像体积 | Building Images → DockerSlim |
| Go 项目无 Dockerfile 部署 | Building Images → ko |
| Dockerfile 质量检查 | Building Images → Hadolint |
| 镜像漏洞扫描 | Image Scanning → Trivy, Grype |
| 供应链安全(签名) | Supply Chain → cosign |
| 私有镜像仓库 | Registry → Harbor |
| 从 Docker Compose 迁移 K8s | Orchestration → kompose |
六、坑与注意
-
awesome-docker 不是工具本身:它只是一个索引/导航,使用某个工具仍需阅读该工具的官方文档。例如用 Trivy 不能只靠 awesome-docker,还要看 Trivy 的用法文档。
-
工具版本差异大:列表中的许多工具更新频繁,同类工具功能重叠(如 Trivy vs Grype vs Clair),建议根据实际使用场景和社区活跃度做选择。
-
macOS 特有:colima 是 macOS/Linux 专用,Windows 用户需要 WSL2 + Docker Desktop 或 Rancher Desktop。
-
BuildKit vs buildx:BuildKit 是底层引擎,buildx 是 Docker CLI 插件提供用户接口;两者常被混淆,实际上启用 buildx 后构建默认就走 BuildKit。
-
distroless 镜像兼容性:distroless 镜像没有 shell,不支持
docker exec,调试时需要额外手段(如kubectl debug)。 -
cosign/sigstore 生态较新:签名验证需要基础设施支持(如 Rekor 透明日志),生产集成有一定复杂度。
-
工具众多,容易选择困难:如果你只是想"把镜像变小",直接用 DockerSlim;想"扫描漏洞",直接用 Trivy;无需读完整个列表再动手。
七、与同类对比
| 列表 | 内容范围 | 特点 |
|---|---|---|
| awesome-docker | Docker 生态专项 | 专注 Docker,覆盖最全 |
| awesome-selfhosted | 自托管软件总览 | 包含 Docker 部署,但不专注 |
| awesome-kubernetes | K8s 生态 | 不包含基础镜像/Dockerfile 工具 |
| 官方 Docker 文档 | Docker 产品 | 只含官方工具,无社区生态 |
awesome-docker 的优势在于只收录真正围绕 Docker 生态的工具,收录标准明确("如果去掉 Docker 功能项目就没有价值,就不收录"),质量较高,不会出现"沾边就算"的情况。
八、一句话推荐
awesome-docker 是 Docker 生态的百科全书,需要任何容器相关工具时,先来这里按图索骥,比在搜索引擎里大海捞针高效得多。