134 lines
3.6 KiB
Markdown
134 lines
3.6 KiB
Markdown
# Debian DinD
|
||
|
||
基于 Debian 的 Docker-in-Docker(DinD)服务,允许你在 Docker 容器内运行 Docker。适用于 CI/CD 流水线、开发环境和容器化构建系统。
|
||
|
||
## 特性
|
||
|
||
- 基于最新稳定版 Debian(13.2-slim)
|
||
- 开箱即用的 Docker 守护进程
|
||
- 使用 `crun` 作为默认运行时,提供更好的性能和更低的内存占用
|
||
- 可选的 NVIDIA Container Toolkit,支持 GPU
|
||
- 配置了资源限制
|
||
- 包含健康检查
|
||
- 通过环境变量自定义配置
|
||
|
||
## 快速开始
|
||
|
||
1. 复制示例环境文件:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
2. 启动服务:
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
3. 验证 Docker 是否在容器内运行:
|
||
|
||
```bash
|
||
docker compose exec dind docker info
|
||
docker compose exec dind docker run hello-world
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
主要环境变量(查看 `.env.example` 了解所有选项):
|
||
|
||
| 变量 | 说明 | 默认值 |
|
||
| ------------------------- | ------------------------- | ---------------- |
|
||
| `GLOBAL_REGISTRY` | 全局镜像仓库前缀(可选) | - |
|
||
| `DEBIAN_DIND_VERSION` | 主 DinD 镜像版本 | `0.1.2` |
|
||
| `DEBIAN_DIND_GPU_VERSION` | GPU 版本 DinD 镜像版本 | `0.1.2-gpu` |
|
||
| `DEBIAN_VERSION` | Debian 基础镜像版本 | `13.2-slim` |
|
||
| `DIND_PORT_OVERRIDE` | Docker 守护进程的主机端口 | `2375` |
|
||
| `INSTALL_NVIDIA_TOOLKIT` | 构建时安装 NVIDIA 工具包 | `false` |
|
||
| `TZ` | 时区 | `UTC` |
|
||
| `DIND_CPU_LIMIT` | CPU 限制 | `2.0` |
|
||
| `DIND_MEMORY_LIMIT` | 内存限制 | `4G` |
|
||
| `DIND_CPU_RESERVATION` | CPU 预留 | `1.0` |
|
||
| `DIND_MEMORY_RESERVATION` | 内存预留 | `2G` |
|
||
| `DOCKER_TLS_CERTDIR` | TLS 证书目录 | 空(TLS 已禁用) |
|
||
|
||
## GPU 支持
|
||
|
||
使用 GPU 支持的 DinD:
|
||
|
||
1. 在 `.env` 中设置 `INSTALL_NVIDIA_TOOLKIT=true`
|
||
2. 使用 `gpu` profile:
|
||
|
||
```bash
|
||
docker compose --profile gpu up -d
|
||
```
|
||
|
||
或使用专用的 GPU 服务:
|
||
|
||
```bash
|
||
docker compose up -d dind-gpu
|
||
```
|
||
|
||
## 安全注意事项
|
||
|
||
⚠️ **重要**:此服务以特权模式运行,这会授予容器对主机系统的广泛访问权限。仅在可信环境中使用。
|
||
|
||
- DinD 运行需要特权模式
|
||
- Docker 守护进程在端口 2375 上暴露,未启用 TLS(仅用于开发)
|
||
- 生产环境请通过设置 `DOCKER_TLS_CERTDIR=/certs` 启用 TLS
|
||
|
||
## 数据卷
|
||
|
||
- `dind-data`:存储 Docker 守护进程数据(镜像、容器、卷)
|
||
- `dind-gpu-data`:GPU 服务的独立数据卷
|
||
|
||
## 资源限制
|
||
|
||
默认资源限制:
|
||
|
||
- CPU:2.0 核心(限制),1.0 核心(预留)
|
||
- 内存:4GB(限制),2GB(预留)
|
||
|
||
根据你的工作负载在 `.env` 中调整这些值。
|
||
|
||
## 高级用法
|
||
|
||
### 从主机连接
|
||
|
||
你可以从主机连接到 Docker 守护进程:
|
||
|
||
```bash
|
||
export DOCKER_HOST=tcp://localhost:2375
|
||
docker info
|
||
```
|
||
|
||
### 在 CI/CD 中使用
|
||
|
||
GitLab CI 配置示例:
|
||
|
||
```yaml
|
||
services:
|
||
- name: your-registry/debian-dind:latest
|
||
alias: docker
|
||
|
||
variables:
|
||
DOCKER_HOST: tcp://docker:2375
|
||
```
|
||
|
||
## 构建参数
|
||
|
||
手动构建镜像时:
|
||
|
||
- `DEBIAN_VERSION`:Debian 基础版本(默认:`13.2-slim`)
|
||
- `INSTALL_NVIDIA_TOOLKIT`:安装 NVIDIA 工具包(默认:`false`)
|
||
|
||
示例:
|
||
|
||
```bash
|
||
docker build --build-arg DEBIAN_VERSION=13.2-slim --build-arg INSTALL_NVIDIA_TOOLKIT=true -t debian-dind-gpu .
|
||
```
|
||
|
||
## 许可证
|
||
|
||
此配置按原样提供,用于 Compose Anything 项目。
|