微服务实战系列之玩转Docker(八)

news2024/9/23 9:34:54

前言

“Compose”一词的原意是创作、组成、构成(一个整体),那么“Docker Compose”一词可以理解为一组docker。今天博主着重介绍一下这个“容器导演” —— 一个docker自带的容器管理工具。

在这里插入图片描述

Docker Compose入门

1. 定义

Docker Compose is a tool for running multi-container applications on Docker defined using the Compose file format. A Compose file is used to define how one or more containers that make up your application are configured. Once you have a Compose file, you can create and start your application with a single command: docker compose up.

博主尝试翻译一下:

Docker Compose是一个使用规范的Compose file(即YML)文件运行多容器应用的工具。而这个YML文件被用于“组织”你的应用中的一个或多个容器,一旦你有了该文件,你能够通过一个命令:docker compose up,完成应用的启停。

在这里插入图片描述

2. 开始必备

2.1 dockerfile

dockerfile是构建镜像的必备文件,也是镜像的根本。关于它的详细内容可以回顾博主的相关博文,这里不再重点介绍。

2.2 compose.yml

compose文件是compose运转的必备文件,也是构建“一组”容器的依赖关系,有序且准确的运行一个完整应用的基础。

有些盆友可能好奇了,这是个什么文件?博主举个栗子(来自github):

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: redis

简单讲就是一个YAML文件。YAML是一个类似 XML、JSON 的标记性语言,便于阅读、易于理解,已普遍用于各种开发语言中。compose基于YML完成服务的定义与编排。

2.3 run application

启动应用时,我们使用如下命令,可一键完成多容器的启动:

docker compose up --build

3. 核心知识

3.1 基本概念

通过“开始必备”一节,我们知道,如熟练使用compose,需重点掌握compose.yml。该文件决定了一个service“需要哪些docker镜像以及每个镜像间的依赖关系”,而众多的service构成了一个application,或者是一个project。

从博主的描述来看,这里有2个重要的概念:project和service。

术语解释
service一个服务单元,在compose中可视为一个镜像的实例。
project一个完整的项目或者应用,在compose中可视由多个镜像实例组合而成的应用。
3.2 选项与指令集

这是一个compose的命令:

docker compose [-f <arg>...] [options] [COMMAND] [ARGS...]

其中主要的Option(选项)如下:

选项用途
–ansi控制何时打印 ANSI 控制字符。可选项有:“never”,“always”,“auto”
–compatibility向后兼容运行
–env-file指定环境文件。比如一些环境变量的配置文件
-f,–file指定 Compose 配置文件(最重要
–parallel控制最大并行性,-1 为无限制 (默认 -1)
–profile指定要启动的服务
–project-directory指定一个替代的工作目录(默认: Compose 文件的路径)
-p,–project指定一个项目名称

主要的Command(命令)如下:

命令用途
config验证compose.yml的格式是否正确
up创建并启动所有服务(即容器组),如后台启动加-q
pull拉取服务依赖的镜像
logs查看服务容器的输出日志,如跟踪日志加-f
ps查看工程中的所有服务(即容器组),如查看具体的服务,需指定名称
run在指定服务(容器)上执行一个命令
exec进入指定的服务(容器),如服务包含多个容器加--index,指定序号
pause、unpause暂停、恢复服务(容器)
start、stop、restart启动、停止、重启服务(容器),如操作具体的服务,需指定名称
rm删除已停止运行的服务(容器),如同步删除挂载的卷加-v
port输出指定服务(容器)的端口所映射的主机端口
images输出指定服务(容器)对应的镜像

4. 举个例子

# 定义compose版本号
version : '3.8'
# 定义服务集
services:
  test-nacos: #service名称
    container_name: test-nacos # 容器名称
    build: 
      context: ./nacos # 指定构建镜像上下文路径 
      dockerfile: Dockerfile #指定nacos dockerfile文件名
      environment: # 环境变量
      - MODE=standalone
    depends_on: # 依赖的service
      - test-mysql
   
  test-mysql:
    container_name: test-mysql
    build:
      context: ./mysql 
      dockerfile: Dockerfile #指定mysql dockerfile文件名
    environment:
      MYSQL_DATABASE: dbname
      MYSQL_ROOT_PASSWORD: password
 

定义完成YML文件,如无误,你就可以根据命令执行启动了。

结语

通过玩转docker系列文章,我想能够让各位盆友对docker产生基本的认识,进而通过不断的尝试与实践,加深这种认识。我们面对新技术、新工具时,通常需要勤思考、勤动手、勤总结。在IT领域,没有什么比行动更重要。

文章再长,终有一尾;
知识再多,一篇难尽!

玩转docker,不一样的精彩,欢迎各位大佬指点与关注,博主在这里不甚感激!


系列回顾

微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这八本大模型书籍看完你就是LLM大师,非常详细收藏我这一篇就够了

如果你想深入了解大模型领域&#xff0c;无论是为了学术研究还是实际应用&#xff0c;选择合适的书籍是非常重要的。以下是精选的八本大模型相关书籍&#xff0c;涵盖了从基础理论到高级实践的内容&#xff0c;可以帮助你构建全面的知识体系。 《大模型应用开发极简入门》 作者…

PyTorch图像分割的基本形式

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客 图像分割是计算机视觉领域中的一个重要任务&#xff0c;旨在将图像划分为多个不同的区域或对象。简单来说&#xff0c;图像分割就是将图像中的像素或区域按照某种规则或标准进行分类&#xff0c;使得同一区域内的像…

如何更改软件ip地址:方法详解

在数字化时代&#xff0c;网络连接已成为我们日常生活与工作中不可或缺的一部分。无论是日常娱乐、办公协作&#xff0c;还是商业运营&#xff0c;软件应用都需要通过IP地址与互联网建立联系。然而&#xff0c;在某些特定情况下&#xff0c;我们可能需要更改软件的IP地址&#…

【Vulnhub系列】Vulnhub Lampiao-1 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub Lampiao-1靶场渗透 原文转载已经过授权 原文链接&#xff1a;Lusen的小窝 - 学无止尽&#xff0c;不进则退 (lusensec.github.io) 一、主机发现 二、端口扫描 三、web框架 四、web渗透 1、信息收集 2、目录扫描 获得版本信息7.56 3、获取shell …

AI时代:成为AI产品经理的方法

一、非技术背景的人员如何转型成为AI产品经理 ​ 产品经理是一个非常重要的岗位&#xff0c;但是高校并没有培养产品经理特别是 AI 产品经理的专业课程&#xff0c;这方面的书籍也非常稀缺。非技术背景的人员转型成为 AI 产品经理是未来一段时间内的一种趋势&#xff0c;这里主…

Nginx 反向代理https域名接口的注意事项

网络环境条件及实际调用需求如下图所示&#xff1a; 如图&#xff0c;要点如下&#xff1a; 应用实际请求的协议是 http&#xff0c;而通过 nginx 反向代理的最终接口是 https应用实际请求的域名是 mynginx.com&#xff0c;而通过 nginx 反向代理的最终接口域名是 api.weixin.…

【虚拟化】KVM概念和架构

目录 一、什么是KVM&#xff1f; 二、KVM的功能 2.1 主要的功能 2.2 其它功能 三、KVM核心组件及作用 四、KVM与VMware的优势 五、KVM架构 六、qemu介绍 七、创建虚拟机流程 一、什么是KVM&#xff1f; Kernel-based Virtual Machine的简称&#xff0c;KVM 是基于虚拟…

CentOS配置NTP服务

更改配置文件 [rootController ~]# vim /etc/chrony.conf 重启服务并设置为开机自启动 [rootController ~]# systemctl restart chronyd.service [rootController ~]# systemctl enable chronyd.service 在另一台CentOS测试 更改配置文件 [rootCompute ~]# vim /etc/chron…

开放式耳机推荐性价比排行榜!公认口碑最好的型号推荐

随着生活的提高&#xff0c;耳机在近几年来一直受到很多用户的喜欢&#xff0c;也逐渐成为大家生活中的必需品&#xff0c;我使用过的耳机也有好几十款了&#xff0c;大部分都因为是入耳式耳机佩戴久了无法忍受酸痛感&#xff0c;有些不入耳的耳机戴久了也会有一种无法形容的不…

【Java】重生之String类再爱我一次---练习题(012)

目录 ♦️练习一&#xff1a;用户登录 ♦️练习二&#xff1a;遍历字符串 ♦️练习三&#xff1a;统计字符次数数 ♦️练习四&#xff1a;拼接字符串 ♦️练习五&#xff1a;反转字符串 ♦️练习六&#xff1a;金额转换 ♦️练习七&#xff1a;手机号屏蔽 ♦️练习一&am…

【全国大学生电子设计竞赛】2024年H题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

【一图学技术】5.OSI模型和TCP/IP模型关系图解及应用场景

OSI模型和TCP/IP模型关系图解 OSI模型和TCP/IP模型都是网络通信的参考模型&#xff0c;用于描述网络协议的层次结构和功能。下面是它们的定义和区别&#xff1a; OSI模型&#xff08;Open Systems Interconnection Model&#xff09; OSI模型是一个理论上的七层模型&#xff…

1套农场,20小时,10万张!重建大师6.3矿山重建实测案例

数字矿山是国家战略资源安全保障体系的重要组成部分&#xff0c;是资源可持续发展的重要基石&#xff0c;是化解高危行业风险的根本途径。 国内某矿山&#xff08;图源网络&#xff09; 在矿山的开发与建设过程中&#xff0c;需要定期采集并动态更新矿区的三维空间数据&#x…

嵌入式Linux开发板如何挂载u盘?

第一步&#xff1a;插入U盘。 第二步&#xff1a;查看U盘名称。 dmesg | tail 可以看到此处我的U盘名称为sda&#xff0c;第一个分区为sda1&#xff0c;路径为/dev/sda。 第三步&#xff1a;创建一个文件夹&#xff0c;将u盘挂载到此文件夹下&#xff0c;查看U盘下的文件 sud…

代码随想录训练营 Day16打卡 二叉树 part04 513. 找树左下角的值 112. 路径总和 106. 从中序与后序遍历序列构造二叉树

代码随想录训练营 Day16打卡 二叉树 part04 一、 力扣513. 找树左下角的值 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 &#xff1a; 输入: …

探索算法系列 - 二分查找算法

目录 二分查找&#xff08;原题链接&#xff09; 在排序数组中查找元素的第一个和最后一个位置&#xff08;原题链接&#xff09; 搜索插入位置&#xff08;原题链接&#xff09; x 的平方根&#xff08;原题链接&#xff09; 山脉数组的峰顶索引&#xff08;原题链接&…

数据结构(面试)

线索二叉树 原理&#xff1a;利用树节点的n1个左右空指针指向其遍历序列的前驱和后继&#xff08;线索&#xff09; 哈夫曼树 哈夫曼树定义&#xff1a;在含有n个带权叶节点的二叉树中&#xff0c;其中带权路径&#xff08;WPL&#xff09;最小的二叉树称为哈夫曼树&#x…

协程的八种创建方式

协程简介 在深入了解创建方式之前&#xff0c;我们先简要回顾一下协程是什么。协程是轻量级的线程。它们在协作式多任务处理中运行&#xff0c;允许在不阻塞线程的情况下挂起和恢复。这使得协程非常适合进行异步编程和高性能的并发任务。&#x1f310; Kotlin中创建协程的方式…

IDA相关

IDA相关 IDA pro 7.7 链接: https://pan.baidu.com/s/14F0M1lxZMCoCAmR3AFmm-A?pwdjk14 提取码: jk14 lazy ida https://github.com/P4nda0s/LazyIDA pip install yara pip install keystone24.0.0.0 可以把ida目录里python site-package的内容复制到本机python的lib/si…