3.0 KiB
3.0 KiB
Debian DinD
基于 Debian 的 Docker-in-Docker(DinD)服务,允许你在 Docker 容器内运行 Docker。适用于 CI/CD 流水线、开发环境和容器化构建系统。
特性
- 基于最新稳定版 Debian(13.2)
- 开箱即用的 Docker 守护进程
- 可选的 NVIDIA Container Toolkit,支持 GPU
- 配置了资源限制
- 包含健康检查
- 通过环境变量自定义配置
快速开始
-
复制示例环境文件:
cp .env.example .env -
启动服务:
docker compose up -d -
验证 Docker 是否在容器内运行:
docker compose exec dind docker info docker compose exec dind docker run hello-world
配置说明
主要环境变量(查看 .env.example 了解所有选项):
| 变量 | 说明 | 默认值 |
|---|---|---|
DEBIAN_VERSION |
Debian 基础镜像版本 | 13.2 |
DIND_PORT_OVERRIDE |
Docker 守护进程的主机端口 | 2375 |
INSTALL_NVIDIA_TOOLKIT |
构建时安装 NVIDIA 工具包 | false |
TZ |
时区 | UTC |
DIND_CPU_LIMIT |
CPU 限制 | 2.0 |
DIND_MEMORY_LIMIT |
内存限制 | 4G |
GPU 支持
使用 GPU 支持的 DinD:
-
在
.env中设置INSTALL_NVIDIA_TOOLKIT=true -
使用
gpuprofile:docker compose --profile gpu up -d
或使用专用的 GPU 服务:
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 守护进程:
export DOCKER_HOST=tcp://localhost:2375
docker info
在 CI/CD 中使用
GitLab CI 配置示例:
services:
- name: your-registry/debian-dind:latest
alias: docker
variables:
DOCKER_HOST: tcp://docker:2375
构建参数
手动构建镜像时:
DEBIAN_VERSION:Debian 基础版本(默认:13.2)INSTALL_NVIDIA_TOOLKIT:安装 NVIDIA 工具包(默认:false)
示例:
docker build --build-arg DEBIAN_VERSION=13.2 --build-arg INSTALL_NVIDIA_TOOLKIT=true -t debian-dind-gpu .
许可证
此配置按原样提供,用于 Compose Anything 项目。