docker compose 安装(手把手讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 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 updocker-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 案例需求

构建一个包含以下组件的简单应用:

  1. Nginx 作为 Web 服务器,托管静态 HTML 页面。
  2. 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 验证部署结果

  1. 在浏览器中访问 http://localhost,查看 Nginx 默认页面。
  2. 使用数据库客户端连接 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 实时追踪日志,或结合工具如 PrometheusGrafana 监控容器状态。


结论

通过本文的讲解,读者已掌握了 docker compose 安装的完整流程,并通过实际案例理解了其核心功能。Docker Compose 不仅简化了多容器应用的部署,还降低了团队协作中的环境一致性风险。对于开发者而言,熟练使用 Compose 可以显著提升生产力,尤其在需要快速搭建复杂架构时,其优势更加凸显。

建议读者在本地环境中动手实践本文中的案例,逐步探索更多高级功能(如自定义网络、数据卷持久化等)。随着技术实践的深入,Docker Compose 将成为您高效开发的得力工具。

最新发布