Docker进阶 - 11. Docker Compose 编排服务

news2024/9/29 23:39:58

注:本文只对一些重要步骤和yml文件进行一些讲解,其他的具体程序没有记录。

目录

1. 原始的微服务工程编排(不使用Compose)

2. 使用Compose编排微服务

2.1 编写 docker-compose.yml 文件

2.2 修改并构建微服务工程镜像

2.3 启动 docker-compose 服务


1. 原始的微服务工程编排(不使用Compose)

 用 mysql,redis以及微服务工程这三个容器实例举例。如果不使用 Compose,需要如下操作:

  • 首先单独 docker run mysql容器实例
  • 然后单独 docker run redis容器实例
  • 将微服务工程打包成一个新的镜像,最后单独 docker run 微服务容器实例

但上述操作需要注意的是:

  • 先后顺序需要固定,先mysql + redis 才能使用微服务访问成功
  • 在编写微服务工程中的yml文件,对于redis等相关配置中,需要写ip,但如果容器间的启停导致ip发生变化,映射会出现错误,如下图


2. 使用Compose编排微服务

2.1 编写 docker-compose.yml 文件

(1) 首先定义 microService 服务,其中 microService 为服务名,可以自己定义。

上述配置,等价于执行下面操作:

docker run -d -p 6001:6001 -v /app/microService:/data --network atguigu_net --name ms01 zzyy_docker:1.6

(2) 然后定义 redis 服务 和 mysql 服务。

 注意:

  • 其中 command 类似于docker run -it 后面进入容器后执行的命令,如 docker run -it ubuntu /bin/bash 中的 /bin/bash
  • redis服务 和 mysql服务 里相较于 microService服务 没有写容器名,那系统会默认给服务名增加前后缀生成一个新的容器名
  • microService 服务中的 depends_on 定义了容器启动顺序,解决了容器之间的依赖关系
  • microService 服务、redis服务 和 mysql服务的 networks都为一个网络,以至于能够使用服务名来代替ip地址

(3) 最后定义采用的网络,下面的语句相当于执行 docker network create atguigu_net 命令


2.2 修改并构建微服务工程镜像

(1) 修改微服务项目中的配置文件,将之前的固定ip地址修改为服务名。如下图:

(2) 使用mvn package命令将微服务形成新的 jar 包,并上传到宿主机服务器下。

(3) 编写Dockerfile,将微服务工程打包成一个新的镜像 docker build -t zzyy_docker:1.6,注意 jar包的位置和Dockerfile的位置以及在2.1配置的yml文件位置要一样,如下图:


2.3 启动 docker-compose 服务

(1) 检查编写的yml文件是否有问题,如有问题则控制台输出错误信息

docker-compose config -q

(2) 启动所有 docker-compose 服务(并后台运行:可选) 

docker-compose up -d

(3) docker-compose 关停所有服务 

docker-compose stop

注:本文部分文字内容来自于 使用compose编排服务 的学习笔记,仅供参考。如看其他Docker内容,可看我博客Docker系列aaron_neil_Dcoker系列,持续更新中。

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

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

相关文章

数据结构(二):单向链表、双向链表

数据结构(二)一、什么是链表1.数组的缺点2.链表的优点3.链表的缺点4.链表和数组的区别二、封装单向链表1. append方法:向尾部插入节点2. toString方法:链表元素转字符串3. insert方法:在任意位置插入数据4.get获取某个…

RNN神经网络初探

目录1. 神经网络与未来智能2. 回顾数据维度和神经网络1. 神经网络与未来智能 2. 回顾数据维度和神经网络 循环神经网络,主要用来处理时序的数据,它对每个词的顺序是有要求的。 循环神经网络如何保存记忆功能? 当前样本只有 3 个特征&#x…

git基本概念图示【学习】

基本概念工作区(Working Directory)就是你在电脑里能看到的目录,比如名字为 gafish.github.com 的文件夹就是一个工作区本地版本库(Local Repository)工作区有一个隐藏目录 .git,这个不算工作区&#xff0c…

新方案:从错误中学习,点云分割中的自我规范化层次语义表示

前言 LiDAR 语义分割通过直接作用于传感器提供的原始内容来完成细粒度的场景理解而受到关注。最近的解决方案展示了如何使用不同的学习技术来提高模型的性能,而无需更改任何架构或数据集。遵循这一趋势,论文提出了一个从粗到精的设置,该设置从…

查找与排序 练习题

1、下列排序算法中,▁▁B▁▁ 是稳定的。 A.简单选择排序 B.冒泡排序 C.希尔排序 D.快速排序 解析:稳定排序是每次排序得到的结果是唯一的,不稳定排序得到的结果不唯一。 稳定:冒泡排序、归并排序、基数排序 不稳定&#x…

DolphinSchedule基于事件驱动的高性能并发编程

文章目录前言前置知识异步编程基于时间驱动的异步编程模式(EAP Event-based Asynchronous Pattern )实现EAPDolphinSchedule结合Netty实现Master与Worker之间的高性能处理能力的设计方案设计代码实现总结前言 研究DolphinSchedule的内因在于对调度系统并…

内存访问局部性特征

分享一道360的C语言笔试题。x是一个行列均为1000的二维数组,下面代码运行效率最高的是哪个? 二维数组大家都很熟悉,正常人遍历二维数组都是一行一行来的,为什么很少有人按列去遍历? 这道笔试题其实考察的就是遍历效率…

#车载基础软件——AUTOSAR AP技术形态

车载基础软件——AUTOSAR AP技术形态 我是穿拖鞋的汉子! 今天是2023年2月11日,时间好快,疫情解封已好几个月,生活节奏也在逐渐恢复到三年前的节奏。可能是感觉疫情与自己距离变远了,大家也开始慢慢的不再恐惧! 老规矩分享一段喜欢的文字,避免自己成为高知识低文化的工…

【安全】nginx反向代理+负载均衡上传webshell

目录 一、负载均衡反向代理下上传webshell Ⅰ、环境搭建 ①下载蚁剑,于github获取官方版: ②下载docker&docker-compose ③结合前面启动环境 ④验证 负载均衡下webshell上传 一、负载均衡反向代理下上传webshell 什么是反向代理? 通常的代…

大数据框架之Hadoop:入门(三)Hadoop运行环境搭建(开发重点)

3.1虚拟机环境准备 详见:yiluohan1234/vagrant_bigdata_cluster: 利用virtualbox快速搭建大数据测试环境 (github.com) 单纯只是安装虚拟机的话,注释掉40到115行。按照教程安装即可。 在 /opt 目录下创建 module、 software 文件夹 [roothdp101 ~]# m…

一、Java并发编程之线程、synchronized

黑马课程 文章目录1. Java线程1.1 创建和运行线程方法一:Thread方法二:Runnable(推荐)lambda精简Thread和runnable原理方法三:FutureTask配合Thread1.2 查看进程和线程的方法1.3 线程运行原理栈与栈帧线程上下文切换1.…

1. SpringMVC 简介

文章目录1. SpringMVC 概述2. SpringMVC 入门案例2.1 入门案例2.2 入门案例工作流程3. bean 加载控制4. PostMan 工具1. SpringMVC 概述 SpringMVC 与 Servlet 功能等同,均属于 Web 层开发技术。SpringMVC 是 Spring 框架的一部分。 对于 SpringMVC,主…

Python导入模块的3种方式

很多初学者经常遇到这样的问题,即自定义 Python 模板后,在其它文件中用 import(或 from...import) 语句引入该文件时,Python 解释器同时如下错误:ModuleNotFoundError: No module named 模块名意思是 Pytho…

45.在ROS中实现global planner(1)

前文move_base介绍(4)简单介绍move_base的全局路径规划配置,接下来我们自己实现一个全局的路径规划 1. move_base规划配置 ROS1的move_base可以配置选取不同的global planner和local planner, 默认move_base.cpp#L70中可以看到是…

Vue3电商项目实战-分类模块1【01-顶级类目-面包屑组件-初级、02-顶级类目-面包屑组件-高级】

文章目录01-顶级类目-面包屑组件-初级02-顶级类目-面包屑组件-高级01-顶级类目-面包屑组件-初级 目的: 封装一个简易的面包屑组件,适用于两级场景。 大致步骤: 准备静态的 xtx-bread.vue 组件定义 props 暴露 parentPath parentName 属性&am…

[oeasy]python0081_ANSI序列由来_终端机_VT100_DEC_VT选项_终端控制序列

更多颜色 回忆上次内容 上次 首先了解了RGB颜色设置可以把一些抽象的色彩名字 落实到具体的 RGB颜色 计算机所做的一切 其实就是量化、编码把生活的一切都进行数字化 标准 是ANSI制定的 这个ANSI 又是 怎么来的 呢??🤔 由来 ANSI 听起…

【c++设计模式】——模板方法模式

模板方法模式的定义 定义一个操作中的算法对象的骨架(稳定),而将一些步骤延迟到子类(定义一个虚函数,让子类去实现),template method使得子类可以不改变(复用)一个算法结…

can协议介绍

目录 1 can协议介绍 1.1can协议 1.2 CAN协议特点 2.CAN FD 2.1 CAN FD协议简介 2.2 CAN FD协议特点 3.LIN 3.1 LIN总线简介 3.2 LIN总线特点 4. FlexRay 4.1 FlexRay简介 4.2 FlexRay特点 5. MOST 6.Ethernet 7 总结: 1 can协议介绍 1.1can协议 CAN…

Linux---Linux是什么

Linux 便成立的核心网站: http://www.kernel.org Linux是什么 Linux 就是一套操作系统 Linux 就是核心与系统呼叫接口那两层 软件移植:如果能够参考硬件的功能函数并据以修改你的操作系统程序代码, 那经过改版后的操作系统就能够在另一个硬…

Spring Boot 整合定时任务完成 从0 到1

Java 定时任务学习 定时任务概述 > 定时任务的应用场景非常广泛, 如果说 我们想要在某时某地去尝试的做某件事 就需要用到定时任务来通知我们 ,大家可以看下面例子 如果需要明天 早起,哪我们一般会去定一个闹钟去通知我们, 而在编程中 有许许多多的…