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:latest
    ports:
      - "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:latest
    ports:
    - "8080:80"
    db:
    image: mysql:5.7
    environment:
    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.7
    volumes:
    - 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-apache
    ports:
    - "8080:80"
    volumes:
    - ./code:/var/www/html
    db:
    image: mysql:5.7
    environment:
    MYSQL_ROOT_PASSWORD: example

  2. 使用 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"

相关推荐
知已难寻9 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
xbzb14 小时前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级
kuroomi18 小时前
Git入门
git·kubernetes
雾时之林18 小时前
国内Docker 镜像加速器配置
云原生·eureka
方便面不加香菜21 小时前
Docker Volume -- 管理卷Volume详解
运维·docker·容器
江湖有缘1 天前
Docker实战 | 使用Docker部署lemonitor镜像站点列表程序
运维·docker·容器
莫晓燚1 天前
mall 电商项目完整部署---实战
linux·运维·docker·容器
我是koten1 天前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
RuoyiOffice1 天前
KubeSphere 容器云实践:从管理 K8s 到建设企业 PaaS,还需要哪些能力
spring boot·kubernetes·kubesphere·jenkins·paas·微服务部署·ruoyi office
风吹稻子1 天前
etcd备份与恢复:删了 etcd.yaml,容器为什么还在跑?——一次 K8s 控制面死锁排查实录
kubernetes