it编程 > 开发工具 > Docker

Docker Compose怎么用?一文教你简化容器编排部署

78人参与 2026-08-21 Docker

背景

在容器化部署过程中,使用原生 docker run 命令存在以下痛点:

docker run --name nginx -p 80:80 -p 443:443 \
	-v /data/nginx/html:/usr/share/nginx/html \
	-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/ \
	-v /data/nginx/conf.d:/etc/nginx/conf.d/ \
	-v /data/nginx/logs:/var/log/nginx \
	-v /data/nginx/ssl:/etc/nginx/ssl \
	--privileged=true -d --restart=always nginx

docker compose可以解决以上问题

简介

docker compose 是 docker 官方提供的容器编排工具,用于简化多容器应用的定义、配置和部署过程。它通过一个 yaml 格式的配置文件(docker-compose.yml)统一管理多个关联容器,解决以下核心问题:

  1. 简化多容器应用部署
    允许通过单一配置文件定义多个服务(如 web 应用、数据库、缓存等),无需手动编写复杂 docker run 命令链,实现一键启动 / 停止所有关联容器。
  2. 统一环境配置
    将容器依赖(镜像版本、网络、端口映射、数据卷、环境变量等)集中声明,确保开发、测试、生产环境的一致性,避免因环境差异导致的运行问题。
  3. 自动化服务依赖管理
    支持定义服务间的启动顺序和依赖关系(如先启动数据库再启动应用),确保容器按逻辑顺序初始化。
  4. 隔离与复用性
    通过独立网络和卷配置,隔离不同项目的容器环境,同时复用同一物理机的资源,提升开发效率。

典型应用场景

一、下载

支持两种安装方式,推荐选择与系统架构匹配的方式

1.1 命令行快速安装(linux/macos)

安装

# 安装
curl -l https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

授予执行权限

# 授予执行权限
sudo chmod +x /usr/local/bin/docker-compose

验证安装

docker-compose --version

1.2 手动安装(网络受限环境)

如果使用命令下载的很慢,可以手动从github下载,然后上传到服务器即可,先解释一下上面的下载命令

curl -l

下载地址解释

https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m`

动态生成文件名

最终文件名示例:

输出重定向

> /usr/local/bin/docker-compose

若权限不足,需在命令前加 sudo,即:

sudo curl -l ... > /usr/local/bin/docker-compose

所以,手动下载有以下几个步骤

1.2.1 确定版本信息

uname -s
uname -m

1.2.2 拼接下载链接

https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m`

使用步骤1的uname -suname -m替换掉链接中的uname -suname -m,例如:

https://github.com/docker/compose/releases/download/1.23.1/docker-compose-linux-x86_64

浏览器中输入该链接即可下载docker compose文件,建议使用科学上网或者使用下载器下载(idm,迅雷)

1.2.3 移动文件到指目录下

将下载好的docker compose文件移动到/usr/local/bin/docker-compose目录下即可

1.2.4 赋予文件可执行权限

赋予docker compose文件可执行权限

sudo chmod +x /usr/local/bin/docker-compose

二、 基本使用

version: '3.8'  # 指定兼容的 compose 规范版本
services:        # 服务定义区块
  webapp:        # 服务名称(自定义)
    image: nginx:alpine  # 基础镜像
    container_name: my-nginx  # 容器命名(可选)
    ports:
      - "80:80"               # 端口映射(主机:容器)
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf  # 挂载配置文件
      - html:/usr/share/nginx/html          # 使用命名卷
    networks:
      - frontend                            # 加入指定网络
    depends_on:
      - database  # 声明依赖关系
  database:
    image: mysql:8.0
    environment:
      mysql_root_password: secure_password  # 环境变量注入
    volumes:
      - mysql_data:/var/lib/mysql           # 数据持久化
    networks:
      - backend
volumes:   # 声明数据卷(自动创建)
  html:
  mysql_data:
networks:  # 自定义网络(隔离通信)
  frontend:
  backend:

2.1 常用命令

执行 docker compose(或旧版 docker-compose)命令时,默认在当前工作目录下查找以下文件:

文件不在当前目录或使用自定义文件名,需通过 -f(或 --file)参数指定路径:

# 指定其他目录或文件名
docker compose -f /path/to/custom-compose.yml up

# 使用多个 compose 文件(合并配置)
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
命令作用
docker-compose up启动所有服务(前台运行)
docker-compose up -d后台启动所有服务
docker-compose down停止并删除容器、网络(保留数据卷)
docker-compose down -v停止并删除容器、网络及数据卷
docker-compose logs查看所有服务的日志
docker-compose logs -f web实时跟踪 web 服务的日志
docker-compose ps查看运行中的容器状态
docker-compose exec web sh进入 web 容器的 shell
docker-compose build根据 build: 配置构建镜像(需在 compose 文件中定义)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

CentOS下如何通过YUM安装Docker?小白也能看懂的超详细步骤

08-21

Nginx Docker容器化安装的实现

08-28

Nginx中生产环境常见错误502、503、504的排查与解决

07-26

Docker下Nginx的容器化部署与数据持久化配置指南

07-26

DeepAudit代码审计工具怎么用?Docker部署与cpolar远程访问教程

07-25

Django+Docker搭建Elasticsearch全文检索怎么做?详细教程来了

07-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论