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 生态系统中的一个重要成员,它允许开发人员使用一个简单的配置文件来定义和运行多个 Docker 容器。通过 docker-compose,你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置,从而实现在一个命令中启动、…...
单调队列
目录 一,单调队列 二,模板实现 三,OJ实战 剑指 Offer 59 - I. 滑动窗口的最大值 一,单调队列 单调队列是双端队列的拓展,支持尾部插入,双端删除,其中的数据始终维持单调性,从而…...
effective c++ 笔记
TODO:还没看太懂的篇章 item25 item35 模板相关内容 文章目录 基础视C为一个语言联邦以const, enum, inline替换#define尽可能使用constconst成员函数 确定对象使用前已被初始化 构造、析构和赋值内含引用或常量成员的类的赋值操作需要自己重写不想使用自动生成的函…...
【送书活动】深入浅出SSD:固态存储核心技术、原理与实战
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...
GaussDB数据库SQL系列-行列转换
一、前言 二、简述 1、行转列概念 2、列转行概念 三、GaussDB数据库的行列转行实验示例 1、行转列示例 1)创建实验表(行存表) 2)静态行转列 3)行转列(结果值:拼接式) 4&…...
美国陆军网络司令部利用人工智能增强网络攻防和作战决策能力
源自: 奇安网情局 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨,并不意味着支持其观点或证实其内容的真实性。版权归原作者所有,如转载稿涉及版权等问题,请立即联系我们删除。 “人工智能技术与咨询…...
Notion团队协作魔法:如何玩转数字工作空间?
Notion简介 Notion已经成为现代团队协作的首选工具之一。它不仅仅是一个笔记应用,更是一个强大的团队协作平台,能够满足多种工作场景的需求。 Notion的核心功能 Notion提供了丰富的功能,如文档、数据库、看板、日历等,满足团队的…...
视频云存储/安防监控/AI视频智能分析平台新功能:人员倒地检测详解
人工智能技术已经越来越多地融入到视频监控领域中,近期我们也发布了基于AI智能视频云存储/安防监控视频智能分析平台的众多新功能,该平台内置多种AI算法,可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍,支持口罩佩戴检测…...
解决RabbitMQ报错Stats in management UI are disabled on this node
文章目录 问题描述:解决步骤:进入容器后,cd到以下路径修改 management_agent.disable_metrics_collector false退出容器重启rabbitmq容器 问题描述: linux 部署 rabbitmq后,打开rabbitmq管理界面。点击channels&#…...
【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素
固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。 固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消…...
数据库约束
文章目录 1. 简介2. 代码演示3. 外键约束4. 外键删除和更新行为 1. 简介 概念:约束时作用于表中子段上的规则,用于限制存储在表中的shuju目的:保证数据库中数据的正确、有效性和完整性分类: 约束描述关键字非空约束限制该字段不…...
Unity实现MQTT服务器
首先下载MqttNet:MqttNet下载地址 解压好后使用vs打开,并生成.dll文件(我这里下载的是4.1.2.350版本) 然后再/Source/MQTTnet/bin/Debug/net452 文件夹中找到生成的文件 新建unity工程,创建Plugins文件夹࿰…...
Linux(centos) 下 Mysql 环境安装
linux 下进行环境安装相对比较简单,可还是会遇到各种奇奇怪怪的问题,我们来梳理一波 安装 mysql 我们会用到下地址: Mysql 官方文档的地址,可以参考,不要全部使用 https://dev.mysql.com/doc/refman/8.0/en/linux-i…...
决策树(Decision Tree)
决策树的定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型: 内部结点(internal node)和叶结点(leaf node࿰…...
解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题
当我们在使用 PaddleClas 进行预训练模型下载时,可能会遇到一个报错,报错信息为 ModuleNotFoundError: No module named ppcls。这个错误通常是因为 Python 解释器无法找到名为 ppcls 的模块,而我们的代码中正尝试导入它。让我们一起来解决这…...
视觉化洞察:为什么我们需要数据可视化?
为什么我们需要数据可视化?这个问题在信息时代变得愈发重要。数据,如今已成为生活的一部分,我们每天都在产生大量的数据,从社交媒体到购物记录,从健康数据到工作表现,数据无处不在。然而,数据本…...
C语言函数概述——拜佛代码
函数是一种可重用的代码块,用于执行特定任务或完成特定功能函数作用:对具备相同逻辑的代码进行封装,提高代码的编写效率,实现对代码的重用函数作用演示代码: #include <stdio.h>// 定义函数 void func() {print…...
防火墙日志分析工具
防火墙提供对进入组织网络的网络流量的来源和类型的可见性,这使得防火墙日志成为重要的信息源,包括所有连接的源地址、目标地址、协议和端口号等详细信息,此信息可以提供对未知安全威胁的见解,是威胁管理中的重要工具。 防火墙日…...
Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合
多个类继承同一个接口,如何注入?与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案:(约定大于配…...
Django系列之日志配置
如何配置 settings.py 文件中增加如下日志模块 """logger 配置""" LOGGING {version: 1,disable_existing_loggers: False, # 是否去掉目前项目中其他地方中以及使用的日志功能,但是将来我们可能会引入第三方的模块,里…...
MC端口映射完全教程:路由器虚拟服务器配置+防火墙放行+内网穿透备用方案
一、什么是MC端口映射MC端口映射是指将运行《我的世界》服务器的电脑内网IP和端口(Java版默认25565),通过路由器设置“映射”到公网,让外网玩家能够连接进来。简单说,就是把你自己电脑上开的游戏房“门牌号”告诉全世界…...
别再让治具压坏你的板子!手把手教你用TSK-64应力测试仪搞定ICT/FCT应力管控
从应力失控到精准管控:TSK-64测试仪在ICT/FCT产线的实战指南 当产线突然出现批量PCBA功能异常时,多数工程师的第一反应是检查焊接质量或元器件性能,却往往忽略了治具施加的机械应力这个"隐形杀手"。某汽车电子制造商曾因FCT治具压力…...
Git使用问题汇总
参考资料 Git教程-廖雪峰的官方网站 Pro git,有简体中文翻译 下载指定版本号 git clone https://github.com/xx.git -b x.x.x更新到最新 git pull origin master当使用git clone --recursive下载中断时,使用下面的命令可以继续 git submodule update --init --recursive…...
2026年盘点最好的5款许可优化工具
你有没有遇到过这种情况:研发部门天天喊许可证不够用,采购那边一年几百万的软件授权费还在往上涨,结果你一查,发现有人开着一个几万块的CAD软件,人已经去开了一个小时的会。钱就这么白白烧掉了。我今年专门把这行摸了一…...
毕业论文难写?2026年AI写作辅助网站排行榜权威发布,轻松定稿不是梦!
写论文效率低、熬夜赶稿、查重不过关?别慌!2026 年最新 AI 论文写作工具合集来了,覆盖选题、大纲、初稿、润色、降重、格式、文献引用全流程,帮你精准匹配最适合的学术助手,彻底告别论文内耗!🏆…...
化学合成革命:5分钟用AI完成复杂分子逆向合成路线设计
化学合成革命:5分钟用AI完成复杂分子逆向合成路线设计 【免费下载链接】aizynthfinder A tool for retrosynthetic planning 项目地址: https://gitcode.com/gh_mirrors/ai/aizynthfinder 你是否曾为设计一个复杂分子的合成路线而彻夜难眠?在传统…...
华为认证“以学代考”续证政策——伙伴篇
华为认证面向伙伴正式推出“以学代考”续证机制,支持华为中国区政企伙伴通过在线学习和在线考试后,即可获取续认证。当前,“以学代考”产品已上架伙伴TF基金产品兑换清单,伙伴可通过TF基金兑换相应课程,完成续认证。完…...
区块链前端技术栈介绍
这是一份完整区块链前端的学习路径,基于当前市场需求和技术趋势。 🗺️ 技术路线总览 阶段 1:基础入门 (1-2个月) 阶段 2:核心 Web3 技能 (2-3个月) 阶段 3:高级应用开发 (3-4个月) 阶段 4:架构与优化 (2-…...
ncmdump终极教程:3分钟解锁网易云音乐NCM加密格式
ncmdump终极教程:3分钟解锁网易云音乐NCM加密格式 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器使用而烦恼吗?ncmdump就是你需要的终极解决方案…...
QMCDecode:3步解锁QQ音乐加密文件,让你的音乐在任何设备自由播放
QMCDecode:3步解锁QQ音乐加密文件,让你的音乐在任何设备自由播放 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载…...
