Docker Compose 高级配置模板教程
AI-摘要
GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
一、模板完整结构概览
networks:
net:
driver: bridge
ipam:
driver: default
config:
- subnet: ${NETWORKS_SUBNET:-172.18.0.0/24}
gateway: ${NETWORKS_GATEWAY:-172.18.0.1}
driver_opts:
com.docker.network.bridge.name: ${NETWORKS_NAME:-default_net}
services:
app:
image: docker_images:tag
container_name: docker_container_name
hostname: docker_hostname
command: [--your_command value]
user: 1000:1000
tty: true
logging:
driver: json-file
options:
max-size: 100m
ports:
- 80:80
volumes:
- your_host_path:your_container_path
environment:
- env_key=value
labels:
- com.labels.key=value
restart: unless-stopped
privileged: true
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
net:
ipv4_address: ${NETWORKS}.2
extra_hosts:
- example.com:1.2.3.4
二、核心模块详解
1. 自定义网络配置(关键进阶功能)
networks:
net:
driver: bridge # 使用桥接模式
ipam: # IP地址管理
config:
- subnet: ${NETWORKS_SUBNET:-172.18.0.0/24} # 支持环境变量动态配置
gateway: ${NETWORKS_GATEWAY:-172.18.0.1}
driver_opts:
com.docker.network.bridge.name: ${NETWORKS_NAME:-default_net} # 自定义网桥名称
- 作用:隔离容器网络,避免端口冲突。
- 环境变量技巧:通过
${VAR:-default}实现灵活配置(如测试/生产环境切换)。
2. 容器基础配置
services:
app:
image: docker_images:tag # 必填:镜像名称:标签
container_name: custom_name # 显式命名容器(避免随机生成)
hostname: docker_hostname # 容器内主机名
user: "1000:1000" # 非root用户运行,提升安全性
tty: true # 启用终端输出美化日志
restart: unless-stopped # 异常退出时自动重启
- 安全建议:
user字段避免使用 root 权限,防止容器逃逸。
3. 资源与设备控制
privileged: true # 授予容器特权(谨慎使用!)
deploy:
resources:
reservations:
devices: # GPU透传支持
- driver: nvidia
count: all # 使用全部GPU
capabilities: [gpu] # 指定GPU能力
- 适用场景:AI 训练、图形渲染等 GPU 加速任务。
- 警告:
privileged: true会暴露宿主机设备,仅在可信环境启用!
4. 存储、日志与端口
volumes:
- /host/path:/container/path # 宿主机目录挂载
ports:
- "80:80" # 端口映射(主机:容器)
logging:
driver: json-file # 日志存储格式
options:
max-size: "100m" # 单日志文件最大容量
- 日志管理:限制日志大小避免磁盘溢出,生产环境推荐
json-file或syslog。
5. 网络与 DNS 扩展
networks:
net:
ipv4_address: 172.18.0.2 # 静态IP(需在subnet范围内)
extra_hosts:
- "example.com:1.2.3.4" # 自定义hosts解析
- 静态 IP:固定 IP 便于容器间通信(如数据库连接)。
- extra_hosts:绕过 DNS 污染,加速域名解析。
三、部署实战示例(Nginx 服务)
services:
nginx:
image: nginx:1.25.4-alpine
container_name: nginx-prod
ports:
- 80:80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf # 挂载自定义配置
environment:
- NGINX_CACHE_SIZE=128m
restart: always
networks:
net:
ipv4_address: 172.18.0.10
启动命令:
export NETWORKS_SUBNET="10.1.0.0/24" # 覆盖默认子网
docker compose up -d
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 ShiDai
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

