K8s docker-compose的入门

ops/2024/12/22 23:57:30/

一、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.ppmy.cn/ops/144165.html

相关文章

王佩丰24节Excel学习笔记——第十五讲:条件格式与公式

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章小技巧】 简单条件格式的设置多个条件叠加使用时,会覆盖之前格式条件格式新建规则使用公式自定义时,注意绝对引用单元格 一、使用简单的条件格式 1、为特定范围的数值…

在 Spark 上实现 Graph Embedding

在 Spark 上实现 Graph Embedding 主要涉及利用大规模图数据来训练模型,以学习节点的低维表示(嵌入)。这些嵌入能够捕捉和反映图中的节点间关系,如社交网络的朋友关系或者物品之间的相似性。在 Spark 上进行这一任务,可…

sqlite3 支持位运算 和view和 triger

数据设置条件以后可以.根据门限自动调整其他的值 由数据库记录修改时间,及记录-> 网元设备的告警产生时间,设置超时清除时间,记录系统的原始时间戳 CPp 有 sqlite 支持 json 导出字符串,json 库将字符串,映射为结构体 triger update table 更新到一个 可设置参数列表 ,view …

9_HTML5 SVG (5) --[HTML5 API 学习之旅]

SVG 模糊效果 HTML5中的SVG&#xff08;可缩放矢量图形&#xff09;允许我们创建高质量的二维图形&#xff0c;包括应用各种滤镜效果。模糊效果是通过<feGaussianBlur>滤镜原语来实现的。下面我将给出4个使用SVG进行模糊效果处理的示例&#xff0c;并为每个代码段添加详…

云消息队列 MQTT 版:物联网通信的基础设施

在物联网&#xff08;IoT&#xff09;技术日新月异的今天&#xff0c;设备之间的通信需求逐渐增大&#xff0c;尤其是在需要高效、实时数据交换的应用场景中&#xff0c;如何确保设备与设备、设备与平台之间的无缝对接与信息流通&#xff0c;成为了行业发展的关键。为了适应这些…

基于matlab的单目相机标定

链接&#xff1a; 单目相机标定&#xff08;使用Matlab&#xff09; 用Matlab对单目相机参数的标定步骤&#xff08;保姆级教程&#xff09; 1.准备代码 调用摄像头代码&#xff08;用于测试摄像头是否可用&#xff09;&#xff1a; #https://blog.csdn.net/qq_37759113/art…

前端篇-Content-Type 详解

Content-Type Content-Type&#xff08;MediaType&#xff09;&#xff0c;即是Internet Media Type&#xff0c;互联网媒体类型&#xff0c;也叫做MIME类型。在互联网中有成百上千中不同的数据类型&#xff0c;HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签&#…

Pycharm访问MongoDB数据库

MongoDB的基础操作 1. 创建连接 #导入pymongo中的用于操作数据库的客户端 from pymongo import MongoClient #创建客户端对象&#xff0c;连接MongoDB服务器 client MongoClient(mongodb://admin:admin123456localhost:27017) 2. 数据的增删改查 2.1 数据的写入 from mon…