当前位置: 首页 > news >正文

Docker Compose 入门教程

一、Docker Compose 简介

Docker Compose 是 Docker 官方提供的多容器编排工具,通过 YAML 文件(docker-compose.yml)定义应用程序的服务、网络和卷,实现一键式容器管理。其核心优势包括:

  • 简化多容器管理:通过单一文件管理多个关联容器。
  • 开发环境标准化:团队共享相同的环境配置。
  • 快速环境搭建:一条命令启动复杂应用栈。
  • 服务依赖管理:自动处理服务间的依赖关系。
  • 配置即代码:版本控制环境配置。
二、安装 Docker Compose
  1. 前置条件

    • 已安装 Docker Engine(版本需与 Compose 兼容)。
    • Linux 系统建议配置镜像加速器(如阿里云、清华源)。
  2. 安装步骤

    • Linux/macOS
      # 下载最新版二进制文件(替换版本号)
      sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      # 添加执行权限
      sudo chmod +x /usr/local/bin/docker-compose
      # 验证安装
      docker-compose --version
      
    • Windows:通过 Docker Desktop 内置安装(需启用 WSL2 或 Hyper-V)。
三、核心概念与文件结构
  1. docker-compose.yml 文件结构

    version: '3.8'  # 指定 Compose 版本
    services:       # 容器服务定义web:          # 服务名称image: nginx:latest  # 使用官方镜像ports:- "80:80"         # 端口映射(宿主机:容器)volumes:- ./html:/usr/share/nginx/html  # 挂载数据卷depends_on:- db               # 依赖其他服务networks:- custom_network    # 使用自定义网络db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123456  # 环境变量networks:- custom_network
    networks:custom_network:driver: bridge  # 使用 bridge 网络驱动ipam:config:- subnet: 172.16.238.0/24  # 指定子网范围
    
  2. 核心配置字段

    • 服务字段(services):定义容器配置,如镜像、端口、卷等。
    • 网络与存储配置(networks/volumes):管理容器间的网络和数据持久化。
四、环境变量管理
  1. .env 文件

    • 集中管理环境变量,使配置与代码分离。
    • 文件格式为键值对(每行一个变量,不支持多行值):
      # .env 文件示例
      DB_PASSWORD=mysecret
      WEB_PORT=8080
      ENVIRONMENT=dev
      
  2. docker-compose.yml 中引用变量

    • 使用 ${变量名}${变量名:-默认值}(若变量未定义,使用默认值)。
    • 示例:
      version: "3.8"
      services:db:image: mysql:${MYSQL_VERSION:-5.7}environment:MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}web:image: nginxports:- "${WEB_PORT}:80"
      
  3. 多环境配置切换

    • 开发环境.env.dev):
      ENVIRONMENT=dev
      WEB_PORT=8080
      
    • 生产环境.env.prod):
      ENVIRONMENT=prod
      WEB_PORT=80
      
    • 启动时指定环境文件:
      docker-compose --env-file .env.prod up
      
五、常用命令实战
  1. 基础命令

    • 启动所有服务(后台模式):
      docker-compose up -d
      
    • 查看运行状态:
      docker-compose ps
      
    • 停止服务:
      docker-compose stop
      
    • 停止并删除容器:
      docker-compose down
      
    • 重建服务:
      docker-compose up -d --build
      
  2. 调试命令

    • 查看服务日志:
      docker-compose logs -f web
      
    • 执行一次性命令:
      docker-compose run --rm web python manage.py migrate
      
    • 进入运行中容器:
      docker-compose exec db psql -U postgres
      
  3. 扩展操作

    • 水平扩展服务实例:
      docker-compose up -d --scale web=3
      
    • 查看服务资源使用:
      docker-compose top
      
    • 验证配置文件:
      docker-compose config
      
六、进阶技巧与最佳实践
  1. YAML 语法规范

    • 使用空格缩进(禁止 Tab),键值对冒号后加空格。
    • 数字/特殊字符环境变量需用引号包裹(如 "8080:80")。
  2. 性能优化

    • 使用 restart: unless-stopped 实现容器自动重启。
    • 通过 deploy/resource/limits 限制 CPU/内存。
  3. 多环境配置

    • 使用 .env 文件管理环境变量。
    • 分环境编写多个 Compose 文件(如 docker-compose.prod.yml)。
  4. 多机管理部署

    • Docker Swarm:使用 docker swarm 进行多机部署。
    • Kubernetes:结合 Kompose 工具将 Compose 文件转换为 Kubernetes 配置。
http://www.lryc.cn/news/622359.html

相关文章:

  • 图片滤镜处理(filters)
  • lidar2imu/auto_caliban以及manual_calib安装过程
  • 线程P5 | 单例模式[线程安全版]~懒汉 + 饿汉
  • 【C#补全计划】委托
  • Vue 侦听器(watch 与 watchEffect)全解析2
  • SSH协议的GIT转换
  • pyecharts可视化图表-pie:从入门到精通(进阶篇)
  • 集成电路学习:什么是Image Segmentation图像分割
  • GPT-5 官方前瞻:它将如何重塑你的数字生活?
  • 艾伦·图灵:计算理论与人工智能的奠基人
  • Linux————网络基础
  • 二分算法(模板)
  • 数据结构与算法p4
  • 什么是ai智能?AI的九年飞跃史:从AlphaGo到Agent智能体
  • 项目管理工具
  • 图说据小学常识证伪数学公理——平面公理是将无穷多各异平面误为同一面的“井底蛙”误区
  • LINUX服务运行CPU平均负载率异常高,CPU占用高
  • ollama大模型
  • fpga高速接口汇总整理
  • 让数据可视化更简单:Embedding Atlas使用指南
  • k8s环境使用Operator部署Seaweedfs集群(一)
  • 【反序列化基本介绍】
  • 48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
  • Point-LIO技术文档中文翻译解析
  • 文章数据发布到苹果CMS(MacCMS)网站技巧
  • ETH持续上涨推动DEX热潮,交易活跃度飙升的XBIT表现强势出圈
  • 图论Day3学习心得
  • 【机器学习】核心分类及详细介绍
  • 开疆智能ModbusTCP转Ethernet网关连接FBOX串口服务器配置案例
  • 【iOS】多线程原理