docker compose 安装(手把手讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言
在现代软件开发中,容器化技术已成为构建、部署和运行应用程序的标准工具。Docker Compose 是 Docker 官方推出的一款开源工具,它能够帮助开发者通过简洁的配置文件定义和管理多容器应用。无论是本地开发环境搭建,还是分布式系统的快速验证,Docker Compose 都能通过简单直观的语法将复杂流程转化为几行命令。对于编程初学者和中级开发者来说,掌握 docker compose 安装和基本使用方法,可以显著提升开发效率,减少环境配置的繁琐操作。
本文将从零开始讲解 docker compose 安装的步骤,结合实际案例演示其核心功能,并通过类比和代码示例帮助读者快速上手。
一、Docker Compose 的核心概念与价值
1.1 什么是 Docker Compose?
Docker Compose 可以被比喻为一个“容器编排指挥家”。它通过一个名为 docker-compose.yml
的配置文件,将多个 Docker 容器(如 Web 服务器、数据库、缓存服务等)定义为一个统一的“服务集合”。开发者无需手动启动每个容器并处理依赖关系,只需一条命令即可完成整个应用的部署。
1.2 Docker Compose 的核心价值
- 简化多容器管理:通过单个文件定义所有服务,避免重复编写冗长的 Docker 命令。
- 环境一致性:确保开发、测试和生产环境的配置完全一致,减少“在我的机器上能运行”(It works on my machine)的问题。
- 快速迭代:通过
docker-compose up
和docker-compose down
命令快速启动或销毁环境。
1.3 Docker Compose 与 Docker 的关系
Docker 是运行容器的基础工具,而 Docker Compose 是其“扩展插件”。二者的关系类似于“乐高积木”与“搭建说明书”:Docker 提供了构建和运行单个容器的“积木块”,而 Docker Compose 则通过配置文件将这些积木块组合成完整的应用结构。
二、Docker Compose 的安装步骤
2.1 安装前的准备
在安装 Docker Compose 之前,必须确保系统已安装 Docker 环境。Docker Compose 需要依赖 Docker 的 API 运行,因此请先根据官方指南完成 Docker 的安装:
- Windows/macOS:通过 Docker Desktop 安装包一键安装。
- Linux:通过官方仓库或脚本安装。
2.2 安装 Docker Compose
2.2.1 Linux 系统安装
在 Linux 环境中,推荐使用以下命令安装最新版本的 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
注意:如果遇到权限问题,可尝试添加
sudo
或检查文件路径权限。
2.2.2 macOS 系统安装
对于 macOS 用户,Docker Compose 已被集成到 Docker Desktop 中。只需启动 Docker Desktop 应用,即可通过终端直接使用 docker compose
命令(注意新版 Docker Compose 命令已改为 docker compose
,而非旧版的 docker-compose
)。
2.2.3 Windows 系统安装
在 Windows 系统上,Docker Compose 同样通过 Docker Desktop 安装。安装完成后,打开 PowerShell 或命令提示符,输入以下命令验证安装:
docker compose version
提示:若命令未生效,请确保 Docker Desktop 已启动,并检查环境变量是否正确配置。
2.3 版本管理与升级
Docker Compose 的版本更新频繁,建议通过以下命令检查当前版本并升级:
docker compose version # 查看版本
docker compose completion bash # 生成自动补全脚本(可选)
三、Docker Compose 的基础用法
3.1 创建第一个 Compose 配置文件
在项目根目录下创建名为 docker-compose.yml
的文件,并编写以下内容:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
文件解析:
version
:指定 Compose 文件格式版本,推荐使用3.x
。services
:定义多个服务,此处包含web
(Nginx 服务器)和db
(MySQL 数据库)。image
:指定使用的镜像名称。ports
:将容器端口(如 80)映射到主机的 80 端口。environment
:设置环境变量(如数据库密码)。
3.2 启动与管理服务
通过以下命令启动所有服务:
docker compose up -d # 以后台模式运行
- 常用命令:
docker compose down
:停止并删除所有容器。docker compose ps
:查看正在运行的服务列表。docker compose logs
:查看服务日志。
3.3 实际案例:部署一个 Web 应用
3.3.1 案例需求
构建一个包含以下组件的简单应用:
- Nginx 作为 Web 服务器,托管静态 HTML 页面。
- MySQL 数据库存储用户数据。
3.3.2 配置文件示例
version: '3.9'
services:
webserver:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html # 将本地目录挂载到容器
depends_on:
- mysql
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: example_db
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
关键点说明:
volumes
:将本地的html
目录挂载到容器内,方便实时修改静态文件。depends_on
:确保 Nginx 容器在 MySQL 启动后才启动,避免连接失败。
3.3.3 验证部署结果
- 在浏览器中访问
http://localhost
,查看 Nginx 默认页面。 - 使用数据库客户端连接 MySQL,确认数据库
example_db
已创建。
四、常见问题与解决方案
4.1 安装后无法使用 docker compose
命令
问题:执行 docker compose up
报错 command not found
。
解决:
- 检查 Docker Desktop 是否已启动(Windows/macOS)。
- 在 Linux 系统中,确认文件路径权限,并尝试使用
sudo
。
4.2 端口冲突导致服务无法启动
现象:启动服务时提示端口已被占用。
解决:
- 修改
docker-compose.yml
中的端口映射,例如将ports: "80:80"
改为ports: "8080:80"
。 - 使用
docker ps
查找占用端口的容器并停止它。
4.3 容器间无法通信
问题:服务 A 无法访问服务 B 的端口。
解决:
- 确保服务定义中正确使用服务名称(如
http://mysql:3306
)。 - 检查网络配置,可尝试在
docker-compose.yml
中添加networks
定义。
五、进阶技巧与最佳实践
5.1 环境变量分离配置
通过 .env
文件管理敏感信息,避免将密码等写入 docker-compose.yml
:
MYSQL_ROOT_PASSWORD=secure_password
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
5.2 多环境配置管理
使用 Compose 文件扩展功能,为不同环境(开发/测试/生产)创建独立配置:
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
5.3 监控与日志聚合
通过 docker compose logs -f
实时追踪日志,或结合工具如 Prometheus
和 Grafana
监控容器状态。
结论
通过本文的讲解,读者已掌握了 docker compose 安装的完整流程,并通过实际案例理解了其核心功能。Docker Compose 不仅简化了多容器应用的部署,还降低了团队协作中的环境一致性风险。对于开发者而言,熟练使用 Compose 可以显著提升生产力,尤其在需要快速搭建复杂架构时,其优势更加凸显。
建议读者在本地环境中动手实践本文中的案例,逐步探索更多高级功能(如自定义网络、数据卷持久化等)。随着技术实践的深入,Docker Compose 将成为您高效开发的得力工具。