当前位置: 首页 > 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.xdnf.cn/news/1302661.html

相关文章:

  • MySQL、PolarDB、PolarDB-X、TableStore、MongoDB、TiDB、ClickHouse选型
  • docker入门
  • Java 调用 Python 脚本:实现 HelloWorld
  • 计算机视觉(opencv)实战五——图像平滑处理(均值滤波、方框滤波、高斯滤波、中值滤波)附加:视频逐帧平滑处理
  • 从根本上解决MAC权限问题(关闭sip)
  • SSL和TLS协议的消息认证码(MAC)
  • Android RxJava变换操作符详解
  • 使用SQLALCHEMY的outerjoin时的bug
  • 训练大模型的前提:数据治理工程:从原始数据到高质量语料的系统化治理实践
  • vector接口模拟实现及其原理
  • Redis 官方提供免费的 30 MB 云数据库
  • 阿里云出里两款新的云服务器
  • Uniapp之微信小程序自定义底部导航栏形态
  • 订单簿数据智能解析深度学习算法筛选大单并预测即时价格变动
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 智能家居【home assistant】(二)-集成xiaomi_home
  • 云原生俱乐部-k8s知识点归纳(3)
  • 【计算机视觉与深度学习实战】02基于形态学的权重自适应图像去噪系统
  • 自学大语言模型之Transformer的Tokenizer
  • Android 欧盟网络安全EN18031 要求对应的基本表格填写
  • 对抗损失(GAN)【生成器+判断器】
  • HarmonyOS 实战:用 List 与 AlphabetIndexer 打造高效城市选择功能
  • 【Java】HashMap的详细介绍
  • PCA降维全解析:从原理到实战
  • JAVA文件管理系统:如何玩转文件操作
  • CUDA中的基本概念
  • Scikit-learn (sklearn) 库详细介绍
  • 869. 重新排序得到 2 的幂
  • iSCSI 服务详解:配置与远程存储
  • 「iOS」————UITableView性能优化