# 示例项目与练习

URL: https://caijiao.org/docker/appendix/samples
Source: docs/docker/appendix/samples.md
Description: 本章节提供 Docker 示例项目和练习，包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理，帮助开发者通过实战加深对 Docker 技术的理解和掌握。

通过动手实践，可以更深入理解 Docker 技术。本节提供多个示例项目和练习，覆盖常见容器化场景。

## 1. 简单 Web 应用容器化

- **项目描述**：
  - 使用 Node.js 或 Python 创建简单 Web 应用
  - 构建 Docker 镜像并运行容器

- **练习步骤**：
  1. 编写应用代码
  2. 创建 Dockerfile
  3. 构建镜像：

  ```bash
  docker build -t mywebapp .

````

4. 运行容器：

```bash
docker run -d -p 8080:8080 mywebapp
```

5. 测试访问应用

## 2. Docker Compose 多服务编排

* **项目描述**：

  * 包含 Web 应用、数据库、缓存服务
  * 使用 Docker Compose 管理多个容器

* **练习步骤**：

  1. 编写 `docker-compose.yml`
  2. 启动服务：

  ```bash
  docker-compose up -d
  ```

  3. 查看服务状态：

  ```bash
  docker-compose ps
  ```

  4. 停止和清理：

  ```bash
  docker-compose down
  ```

## 3. 自定义 Registry 实践

* 搭建私有 Registry
* 推送和拉取自定义镜像
* 配置访问权限和 HTTPS

## 4. 网络与存储实验

* 创建自定义网络，测试容器间通信
* 挂载卷，读写宿主文件系统
* 备份和恢复卷数据

## 5. 性能优化练习

* 构建多阶段镜像，减小镜像体积
* 设置 CPU、内存限制
* 使用 `docker stats` 监控资源使用

## 6. 故障排查练习

* 容器启动失败的日志分析
* 网络连接问题排查
* 容器挂载权限问题解决

---

通过完成以上示例项目和练习，开发者可以全面掌握 Docker 容器构建、运行、管理和优化技能，并具备处理实际问题的能力。
