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

Docker三剑客之docker-compose

docker-compose 是 Docker 生态系统中的一个重要成员,它允许开发人员使用一个简单的配置文件来定义和运行多个 Docker 容器。通过 docker-compose,你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置,从而实现在一个命令中启动、停止和管理整个应用程序栈。

安装 docker-compose

我们之前有篇文章Docker 及 Docker Compose 安装指南介绍过docker和docker-compose 的安装,家人们可以查阅下。我们在这块在介绍下docker-compose的安转。

从github上下载docker-compose二进制文件安装

  • 下载最新版的docker-compose文件

官方文档地址:https://docs.docker.com/compose/install/

下载地址

https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64

  • 将文件放到 /usr/local/bin/下并重命名
cd /usr/local/bin/
mv docker-compose-linux-x86_64 docker-compose
  • 添加可执行权限
cd /usr/local/bin/
sudo chmod +x docker-compose
  • 测试安装结果

docker-compose --version

显示 Docker Compose version v2.5.0 则表示已经安装成功了

编写 docker-compose.yml 文件

docker-compose 使用一个名为 docker-compose.yml 的文件来定义应用程序的组件和配置。这个文件使用 YAML 格式,因此可读性良好,并且易于编写和维护。

以下是一个mysql8.0的示例,展示了如何定义一个 mysql数据库服务:

#这个文件使用的 Docker Compose 版本。在这个例子中,使用的是版本3.3。
version: '3.3'
# 定义了一个名为 mysql-db 的服务。这个服务将会创建一个 MySQL 数据库容器。
services:mysql-db:# 指定容器的名称container_name: mysql     # 指定镜像和版本image: mysql:8.0  #将容器内的端口 3306 映射到宿主机的端口 3306。这允许在宿主机上通过端口 3306 访问 MySQL 服务器。ports:- "3306:3306"#配置容器的重启策略为 always,这意味着当容器退出时会自动重启。restart: always# 容器日志大小配置logging:driver: 'json-file'options:max-size: '5g'#设置容器内的环境变量 MYSQL_ROOT_PASSWORD,用于配置 MySQL 数据库的 root 用户密码为 xj2022。environment:# 配置root密码MYSQL_ROOT_PASSWORD: xj2022#设置数据卷挂载volumes:# 挂载数据目录- "./mysql/data:/var/lib/mysql" # 挂载配置文件目录- "./mysql/config:/etc/mysql/conf.d"     


常用命令

此处所有命令均在docker-compose.yml 同级目录下使用



  • 启动服务
docker-compose up 

后台启动

docker-compose up -d

使用 docker-compose up 命令可以启动你在配置文件中定义的所有服务。加上 -d 参数可以在后台运行它们。

常用参数的详细解释:

  • -d 或 --detach:以“分离模式”运行,即在后台运行容器,不会阻塞终端。
  • –build:在启动之前构建服务的镜像。如果 docker-compose.yml 中有 build 配置,使用这个选项可以强制重新构建镜像。
  • –force-recreate:在启动之前强制重新创建容器。即使容器已经存在,也会停止并重新创建它们。
  • –no-deps:不启动依赖的服务。默认情况下,docker-compose up 会启动所有依赖的服务,但使用此选项可以避免启动它们。
  • –scale SERVICE=NUM:指定要扩展的服务和容器实例数量。


  • 停止服务
docker-compose down

使用 docker-compose down 命令可以停止并移除所有相关的容器、网络和存储卷。



  • 查看日志
docker-compose logs -f

使用 docker-compose logs 命令可以查看指定服务的日志输出。

常用参数的详细解释:

  • -f 或 --follow:实时跟踪日志输出,类似于 tail -f 命令。当新日志输出产生时,会自动显示在终端上。
  • –tail=<数值>:仅显示指定行数的日志。例如,–tail=100 将仅显示最后的 100 行日志。
  • –timestamps:在日志输出中包含时间戳。
  • –no-color:禁止使用颜色编码显示日志。
  • -t 或 --timestamps:在日志输出中显示时间戳。
  • –since=<时间戳或持续时间>:仅显示从指定时间戳开始的日志,或从指定的持续时间内的日志。例如,–since=“2023-08-01” 或 --since=“2h30m”。
  • –until=<时间戳或持续时间>:仅显示直到指定时间戳为止的日志,或在指定的持续时间内的日志。例如,–until=“2023-08-15” 或 --until=“1h”。

总结

docker-compose 是一个强大的工具,能够简化多个 Docker 容器的定义、管理和交互。它使开发人员能够轻松地在本地环境中模拟复杂的应用程序栈,加速开发和测试流程。通过编写清晰的 docker-compose.yml 文件,并结合 docker-compose 提供的命令,你可以以更高效的方式构建和管理容器化的应用程序。无论是小型项目还是大规模系统,docker-compose 都是一个不可或缺的工具,助力你更好地驾驭 Docker 的强大能力。

相关文章:

Docker三剑客之docker-compose

docker-compose 是 Docker 生态系统中的一个重要成员&#xff0c;它允许开发人员使用一个简单的配置文件来定义和运行多个 Docker 容器。通过 docker-compose&#xff0c;你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置&#xff0c;从而实现在一个命令中启动、…...

单调队列

目录 一&#xff0c;单调队列 二&#xff0c;模板实现 三&#xff0c;OJ实战 剑指 Offer 59 - I. 滑动窗口的最大值 一&#xff0c;单调队列 单调队列是双端队列的拓展&#xff0c;支持尾部插入&#xff0c;双端删除&#xff0c;其中的数据始终维持单调性&#xff0c;从而…...

effective c++ 笔记

TODO&#xff1a;还没看太懂的篇章 item25 item35 模板相关内容 文章目录 基础视C为一个语言联邦以const, enum, inline替换#define尽可能使用constconst成员函数 确定对象使用前已被初始化 构造、析构和赋值内含引用或常量成员的类的赋值操作需要自己重写不想使用自动生成的函…...

【送书活动】深入浅出SSD:固态存储核心技术、原理与实战

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

GaussDB数据库SQL系列-行列转换

一、前言 二、简述 1、行转列概念 2、列转行概念 三、GaussDB数据库的行列转行实验示例 1、行转列示例 1&#xff09;创建实验表&#xff08;行存表&#xff09; 2&#xff09;静态行转列 3&#xff09;行转列&#xff08;结果值&#xff1a;拼接式&#xff09; 4&…...

美国陆军网络司令部利用人工智能增强网络攻防和作战决策能力

源自&#xff1a; 奇安网情局 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨&#xff0c;并不意味着支持其观点或证实其内容的真实性。版权归原作者所有&#xff0c;如转载稿涉及版权等问题&#xff0c;请立即联系我们删除。 “人工智能技术与咨询…...

Notion团队协作魔法:如何玩转数字工作空间?

Notion简介 Notion已经成为现代团队协作的首选工具之一。它不仅仅是一个笔记应用&#xff0c;更是一个强大的团队协作平台&#xff0c;能够满足多种工作场景的需求。 Notion的核心功能 Notion提供了丰富的功能&#xff0c;如文档、数据库、看板、日历等&#xff0c;满足团队的…...

视频云存储/安防监控/AI视频智能分析平台新功能:人员倒地检测详解

人工智能技术已经越来越多地融入到视频监控领域中&#xff0c;近期我们也发布了基于AI智能视频云存储/安防监控视频智能分析平台的众多新功能&#xff0c;该平台内置多种AI算法&#xff0c;可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍&#xff0c;支持口罩佩戴检测…...

解决RabbitMQ报错Stats in management UI are disabled on this node

文章目录 问题描述&#xff1a;解决步骤&#xff1a;进入容器后&#xff0c;cd到以下路径修改 management_agent.disable_metrics_collector false退出容器重启rabbitmq容器 问题描述&#xff1a; linux 部署 rabbitmq后&#xff0c;打开rabbitmq管理界面。点击channels&#…...

【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素

固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备&#xff0c;固体硬盘的英文简称是SSD&#xff0c;如果是移动用的固态硬盘&#xff0c;则其英文简称为PSSD。 固态硬盘SSD分工业级和消费级等&#xff0c;目前&#xff0c;工业级固态硬盘SSD通常采用MLC闪存&#xff0c;而消…...

数据库约束

文章目录 1. 简介2. 代码演示3. 外键约束4. 外键删除和更新行为 1. 简介 概念&#xff1a;约束时作用于表中子段上的规则&#xff0c;用于限制存储在表中的shuju目的&#xff1a;保证数据库中数据的正确、有效性和完整性分类&#xff1a; 约束描述关键字非空约束限制该字段不…...

Unity实现MQTT服务器

首先下载MqttNet&#xff1a;MqttNet下载地址 解压好后使用vs打开&#xff0c;并生成.dll文件&#xff08;我这里下载的是4.1.2.350版本&#xff09; 然后再/Source/MQTTnet/bin/Debug/net452 文件夹中找到生成的文件 新建unity工程&#xff0c;创建Plugins文件夹&#xff0…...

Linux(centos) 下 Mysql 环境安装

linux 下进行环境安装相对比较简单&#xff0c;可还是会遇到各种奇奇怪怪的问题&#xff0c;我们来梳理一波 安装 mysql 我们会用到下地址&#xff1a; Mysql 官方文档的地址&#xff0c;可以参考&#xff0c;不要全部使用 https://dev.mysql.com/doc/refman/8.0/en/linux-i…...

决策树(Decision Tree)

决策树的定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点&#xff08;node&#xff09;和有向边&#xff08;directed edge&#xff09;组成。结点有两种类型: 内部结点&#xff08;internal node&#xff09;和叶结点&#xff08;leaf node&#xff0…...

解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题

当我们在使用 PaddleClas 进行预训练模型下载时&#xff0c;可能会遇到一个报错&#xff0c;报错信息为 ModuleNotFoundError: No module named ppcls。这个错误通常是因为 Python 解释器无法找到名为 ppcls 的模块&#xff0c;而我们的代码中正尝试导入它。让我们一起来解决这…...

视觉化洞察:为什么我们需要数据可视化?

为什么我们需要数据可视化&#xff1f;这个问题在信息时代变得愈发重要。数据&#xff0c;如今已成为生活的一部分&#xff0c;我们每天都在产生大量的数据&#xff0c;从社交媒体到购物记录&#xff0c;从健康数据到工作表现&#xff0c;数据无处不在。然而&#xff0c;数据本…...

C语言函数概述——拜佛代码

函数是一种可重用的代码块&#xff0c;用于执行特定任务或完成特定功能函数作用&#xff1a;对具备相同逻辑的代码进行封装&#xff0c;提高代码的编写效率&#xff0c;实现对代码的重用函数作用演示代码&#xff1a; #include <stdio.h>// 定义函数 void func() {print…...

防火墙日志分析工具

防火墙提供对进入组织网络的网络流量的来源和类型的可见性&#xff0c;这使得防火墙日志成为重要的信息源&#xff0c;包括所有连接的源地址、目标地址、协议和端口号等详细信息&#xff0c;此信息可以提供对未知安全威胁的见解&#xff0c;是威胁管理中的重要工具。 防火墙日…...

Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合

多个类继承同一个接口,如何注入&#xff1f;与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案&#xff1a;(约定大于配…...

Django系列之日志配置

如何配置 settings.py 文件中增加如下日志模块 """logger 配置""" LOGGING {version: 1,disable_existing_loggers: False, # 是否去掉目前项目中其他地方中以及使用的日志功能&#xff0c;但是将来我们可能会引入第三方的模块&#xff0c;里…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...