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

K8s docker-compose的入门

一、Docker Compose 简介

  1. 什么是 Docker Compose?
    • 用于定义和运行多容器 Docker 应用的工具。
  2. Docker Compose 的主要功能
    • 使用 docker-compose.yml 文件定义服务。
    • 一键启动和管理多容器环境。
  3. 安装与环境准备
    • 安装 Docker 和 Docker Compose。
    • 检查版本:docker-compose --version

二、Docker Compose 的基本概念

  1. 核心组件
    • 服务 (Services):构成应用的各个容器。
    • 网络 (Networks):服务之间的通信方式。
    • 卷 (Volumes):持久化存储。
  2. docker-compose.yml 文件结构
    • 版本声明:version: "3.9"
    • 服务配置:services
    • 网络配置:networks
    • 卷配置:volumes

三、Docker Compose 的基本使用

  1. 创建一个简单的 docker-compose.yml 文件

       示例:运行一个 Nginx 容器

version: "3.9"
services:web:image: nginx:latestports:- "8080:80"
  1. 常用命令
    • 启动服务:docker-compose up
    • 后台启动:docker-compose up -d
    • 查看运行容器:docker-compose ps
    • 停止服务:docker-compose down

四、进阶配置

  1. 使用环境变量
version: "3.9"
services:web:image: nginx:${NGINX_VERSION}

使用 .env 文件设置环境变量:NGINX_VERSION=latest

2、定义多个服务

  • 示例:Web + 数据库组合(Nginx + MySQL)
version: "3.9"
services:web:image: nginx:latestports:- "8080:80"db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: example

五、Compose 网络与卷

  1. 网络的使用
    • 默认网络类型:bridge
    • 自定义网络:
networks:my-network:driver: bridge

服务绑定到网络:

services:web:networks:- my-network

2、卷的持久化存储

  • 定义卷:
volumes:data-volume:
  •   挂载卷:
services:db:image: mysql:5.7volumes:- data-volume:/var/lib/mysql

六、调试与排错

  1. 查看日志:docker-compose logs
  2. 查看特定服务日志:docker-compose logs service_name
  3. 重启服务:docker-compose restart
  4. 清理无用资源:docker-compose down --volumes

七、实际案例:复杂应用部署

  1. LAMP 堆栈 (Linux, Apache, MySQL, PHP)
version: "3.9"
services:web:image: php:7.4-apacheports:- "8080:80"volumes:- ./code:/var/www/htmldb:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: example
  1. 使用 Traefik 作为反向代理
    • 配置示例。

八、CI/CD 中的 Docker Compose

  1. 在 GitHub Actions 中使用 Docker Compose。
  2. 集成 Jenkins、GitLab CI 等工具。

九、高级技巧

  1. 使用 extends 复用配置。
  2. 与 Swarm 模式结合,扩展为分布式集群。

十、优化与性能调优

  1. 减少构建时间:使用多阶段构建。
  2. 合理配置资源限制:
deploy:resources:limits:cpus: "0.5"memory: "512M"

http://www.lryc.cn/news/507309.html

相关文章:

  • 去雾Cycle-GAN损失函数
  • word实现两栏格式公式居中,编号右对齐
  • vtie项目中使用到了TailwindCSS,如何打包成一个单独的CSS文件(优化、压缩)
  • shell脚本案例
  • 完整微服务设计 功能实现
  • JWT令牌与微服务
  • C# WinForm移除非法字符的输入框
  • 智慧商城:基于请求数据动态渲染购物车列表
  • 医疗信息化浪潮下 SSM+Vue 医院预约挂号系统的崛起
  • QScreen在Qt5.15与Qt6.8版本下的区别
  • 模具生产过程中的标签使用流程图
  • Unity-URP设置单独渲染UI相机
  • 如何使用java来解析一个pdf文件呢?
  • asp.net core发布配置端口号,支持linux
  • M3D: 基于多模态大模型的新型3D医学影像分析框架,将3D医学图像分析从“看图片“提升到“理解空间“的层次,支持检索、报告生成、问答、定位和分割等8类任务
  • JavaScript中,常用crypto模块进行rsa加密,crypto-js模块进行md5算法
  • 机器学习04-为什么Relu函数
  • 基于Arduino的自动开瓶系统
  • 通过使用 contenteditable=“true“,我们彻底防止了 iOS 系统键盘的弹出
  • 20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕
  • 搜索召回:召回聚合
  • NTFS 文件搜索库
  • 【GoF23种设计模式】02_单例模式(Singleton Pattern)
  • UniApp:uni-segmented-control 自定义布局
  • 【算法day17-day18】回溯:解决组合问题
  • 从监控异常发现网络安全
  • Qt之自定义标题栏拓展(十)
  • Verilog中initial的用法
  • (14)D-FINE网络,爆锤yolo系列
  • Python :冬至快乐