Skip to content
On this page

Docker 工具与资源

官方工具

Docker CLI

Docker 命令行界面,用于与 Docker 守护进程交互。

常用命令:

bash
# 镜像管理
docker build - 构建镜像
docker pull - 拉取镜像
docker push - 推送镜像
docker images - 列出本地镜像
docker rmi - 删除镜像

# 容器管理
docker run - 运行容器
docker ps - 列出容器
docker stop - 停止容器
docker start - 启动容器
docker exec - 在运行的容器中执行命令

# 系统管理
docker system prune - 清理系统
docker info - 显示系统信息
docker version - 显示版本信息

Docker Compose

用于定义和运行多容器 Docker 应用的工具。

常用命令:

bash
docker-compose up - 启动服务
docker-compose down - 停止并删除服务
docker-compose build - 构建服务
docker-compose logs - 查看服务日志
docker-compose ps - 列出服务状态

Docker Buildx

Docker 的下一代镜像构建工具,支持 BuildKit 功能和跨平台构建。

bash
# 创建构建器实例
docker buildx create --name mybuilder --use

# 构建多平台镜像
docker buildx build --platform linux/amd64,linux/arm64 -t my-app:latest .

# 推送多平台镜像
docker buildx build --platform linux/amd64,linux/arm64 -t my-app:latest --push .

社区工具

1. DockerSlim

DockerSlim 可以显著减小 Docker 镜像的大小,同时保持功能完整性。

bash
# 构建优化后的镜像
docker-slim build --target my-app:latest

# 显示优化报告
docker-slim build --target my-app:latest --show-blogs

2. Dive

Dive 是一个用于探索 Docker 镜像层内容和发现减小镜像大小方法的工具。

bash
# 分析镜像
dive my-app:latest

3. Hadolint

Hadolint 是一个 Dockerfile 静态分析工具,可帮助编写更安全、更高效的 Dockerfile。

bash
# 检查 Dockerfile
hadolint Dockerfile

# 使用 Docker 运行
docker run --rm -i hadolint/hadolint < Dockerfile

4. Trivy

Trivy 是一个简单而全面的漏洞扫描器,支持 Docker 镜像、文件系统等扫描。

bash
# 扫描 Docker 镜像
trivy image my-app:latest

# 扫描文件系统
trivy fs /path/to/project

# 扫描配置文件
trivy config /path/to/docker-compose.yml

5. Anchore

Anchore 是一个用于检查、分析和扫描 Docker 镜像的开源工具。

bash
# 添加镜像进行分析
anchore-cli image add my-app:latest

# 获取镜像分析结果
anchore-cli image content my-app:latest os

镜像仓库

Docker Hub

Docker 官方镜像仓库,提供大量官方和社区维护的镜像。

企业级仓库

  • Harbor: VMWare 开源的企业级镜像仓库,提供安全、镜像扫描、策略管理等功能
  • GitLab Container Registry: GitLab 集成的容器仓库
  • Amazon ECR: AWS 提供的容器镜像仓库
  • Google Container Registry: Google Cloud 提供的容器仓库
  • Azure Container Registry: Microsoft Azure 提供的容器仓库

监控与日志

1. Prometheus + Grafana

组合使用用于 Docker 容器监控和可视化。

yaml
# docker-compose 监控示例
version: '3.8'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

  node-exporter:
    image: prom/node-exporter
    ports:
      - "9100:9100"

2. ELK Stack

Elasticsearch、Logstash、Kibana 组合用于日志收集和分析。

3. Fluentd

通用日志收集器,可与 Docker 集成收集容器日志。

bash
# Docker 启动时指定日志驱动
docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 my-app:latest

安全工具

1. Docker Bench for Security

检查 Docker 安装是否遵循安全最佳实践。

bash
# 运行安全检查
docker run --rm -it --net host --pid host --userns host --cap-add audit_control \
    -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
    -v /var/lib:/var/lib \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/lib/systemd:/usr/lib/systemd \
    -v /etc:/etc \
    docker/docker-bench-security

2. Notary

用于镜像签名和验证,确保镜像的完整性和来源可信。

3. Clair

静态分析工具,用于容器镜像的漏洞扫描。

开发工具

1. Skaffold

Google 开发的简化 Kubernetes 应用开发的命令行工具。

bash
# 开发模式,自动构建和部署
skaffold dev

# 构建镜像
skaffold build

2. Tilt

用于本地 Kubernetes 开发的工具,支持实时更新。

3. DevSpace

用于开发和部署容器化应用的命令行工具。

bash
# 启动开发环境
devspace dev

容器编排工具

1. Docker Swarm

Docker 原生的容器编排工具。

bash
# 初始化 Swarm
docker swarm init

# 部署服务
docker service create --name web --replicas 3 --publish 80:80 nginx

# 查看服务
docker service ls

2. Kubernetes

功能强大的容器编排平台。

相关工具:

  • kubectl: Kubernetes 命令行工具
  • Helm: Kubernetes 包管理器
  • Kustomize: Kubernetes 配置管理工具

3. Nomad

HashiCorp 开发的简单易用的容器编排工具。

镜像构建工具

1. Buildah

用于构建 OCI 兼容镜像的工具,无需守护进程。

bash
# 构建镜像
buildah bud -t my-app:latest .

2. Kaniko

Google 开发的在容器中构建镜像的工具,无需特权模式。

3. Podman

Docker 的替代品,无需守护进程运行容器。

学习资源

官方文档

在线课程

  • Docker 官方培训
  • Udemy Docker 课程
  • Coursera 云计算课程

书籍推荐

  • 《Docker 技术入门与实战》
  • 《第一本 Docker 书》
  • 《Docker 源码分析》

社区与论坛

  • Docker 社区论坛
  • Stack Overflow
  • Reddit r/docker

实践项目

1. 容器化现有应用

  • 选择一个现有应用
  • 编写 Dockerfile
  • 构建和测试镜像
  • 使用 Docker Compose 管理多服务应用

2. CI/CD 集成

  • 在 CI/CD 流水线中集成 Docker 构建
  • 自动化镜像推送
  • 实现蓝绿部署或滚动更新

3. 微服务部署

  • 将应用拆分为多个微服务
  • 为每个服务创建 Docker 镜像
  • 使用 Docker Compose 或 Kubernetes 部署

最佳实践总结

  1. 镜像优化: 使用多阶段构建,选择合适的基础镜像
  2. 安全: 使用非 root 用户,定期扫描漏洞
  3. 监控: 实施日志记录和性能监控
  4. 自动化: 集成 CI/CD 流程
  5. 文档: 为镜像和配置编写清晰的文档

小结

Docker 生态系统提供了丰富的工具和资源,涵盖了从开发、构建、部署到监控的整个应用生命周期。选择合适的工具组合,能够显著提高开发效率和应用的可靠性。在实际项目中,应根据具体需求和团队技能选择适当的工具。