网站首页 > 博客文章 正文
以下是 Docker Compose 的详细说明,分为几个核心部分,便于理解和使用:
1. 什么是 Docker Compose?
- 定义: Docker Compose 是一个通过 YAML 文件定义和管理多容器 Docker 应用的工具。
- 作用: 简化多容器应用的配置、启动和生命周期管理,替代冗长的 docker run 命令。
- 适用场景: 开发环境、测试环境、单主机部署(生产环境建议结合 Docker Swarm/Kubernetes)。
2. 核心概念
概念 | 说明 |
项目 | 由一组关联的容器组成,默认以所在目录名命名(可用 -p 指定)。 |
服务 | 一个服务的定义对应一个容器(如 web、db)。 |
卷 (Volumes) | 持久化数据存储,避免容器销毁后数据丢失。 |
网络 (Networks) | 自定义容器间通信的网络,默认创建独立的网络供服务互通。 |
3. docker-compose.yml 文件结构
yaml
version: "3.8" # 指定 Compose 版本(与 Docker 引擎版本相关)
services: # 定义所有服务
web: # 服务名称
image: nginx:latest # 使用的镜像
ports:
- "80:80" # 端口映射(主机:容器)
environment: # 环境变量
- DEBUG=1
volumes:
-
./html:/usr/share/nginx/html # 挂载主机目录到容器
depends_on: # 依赖关系
- db
db:
image: postgres:13
volumes:
-
db_data:/var/lib/postgresql/data # 使用命名卷
volumes: # 声明卷
db_data:
4. 常用配置项
配置项 | 说明 |
build | 根据 Dockerfile 构建镜像(替代 image)。 |
command | 覆盖容器默认的启动命令。 |
ports | 暴露端口(格式:HOST:CONTAINER)。 |
environment | 设置环境变量(支持键值对或列表)。 |
volumes | 挂载主机路径或命名卷到容器。 |
networks | 指定容器加入的网络。 |
depends_on | 定义服务启动顺序(注意:不保证依赖服务已完全就绪)。 |
restart | 容器退出时的重启策略(如 always、on-failure)。 |
5. 常用命令
命令 | 说明 |
docker compose up -d | 启动所有服务(后台模式)。 |
docker compose down | 停止并删除容器、网络。 |
docker compose ps | 查看服务状态。 |
docker compose logs [service] | 查看服务日志。 |
docker compose build | 重新构建服务的镜像。 |
docker compose exec [service] [command] | 在运行中的容器内执行命令(如进入 Shell)。 |
docker compose pull | 拉取服务的最新镜像。 |
6. 高级功能
- 环境变量文件: 使用 .env 文件或 env_file 配置项管理变量。
yaml
env_file:
- .env
- 多文件配置: 使用 -f 指定多个 Compose 文件,适应不同环境(如开发、生产)。
bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
- 扩展字段: 使用 x-* 自定义字段实现配置复用。
- 健康检查: 确保依赖服务真正就绪。
yaml
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
7. 示例:Web 应用 + Redis
yaml
version: "3.8"
services:
web:
build: . # 使用当前目录的 Dockerfile 构建
ports:
- "5000:5000"
environment:
- REDIS_HOST=redis
depends_on:
- redis
redis:
image: "redis:alpine"
volumes:
- redis_data:/data
volumes:
redis_data:
启动命令:
bash
docker compose up -d # 启动
docker compose down --volumes # 停止并删除所有资源
8. 注意事项
- 版本兼容性: 不同 Compose 文件版本支持的功能不同(版本对照表)。
- 服务依赖: depends_on 仅控制启动顺序,需结合健康检查确保依赖服务就绪。
- 资源限制: 可在配置中限制 CPU/内存(如 deploy.resources 用于 Swarm 模式)。
掌握以上内容,您已能高效使用 Docker Compose 管理多容器应用!
- 上一篇: 云原生时代下的Linux容器排错指南
- 下一篇: Docker 容器操作命令:你真的用对了吗?
猜你喜欢
- 2025-04-27 基于Docker构建安装Git/GitLab,以及制作springboot工程镜像
- 2025-04-27 Docker 容器操作命令:你真的用对了吗?
- 2025-04-27 在豆包的协助下,折腾了一天,电脑盲终于把Doccano安装好了
- 2025-04-27 云原生时代下的Linux容器排错指南
- 2025-04-27 Ollama使用指南【超全版】
- 2025-04-27 Docker 类面试题(常见问题)
- 2025-04-27 记一次Docker映像的升级经历,有几个小细节还真得注意
- 2025-04-27 「ELK」elastalert 日志告警
- 2025-04-27 Docker容器化部署Java应用的妙招
- 2025-04-27 NAS的神级Docker推荐:从入门到精通的完全指南
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)