docker compose实现容器编排

Compose 使用的三个步骤:

使用 Dockerfile 定义应用程序的环境

使用 compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行

最后,执行 docker compose up 命令来启动并运行整个应用程序

为什么需要docker compose

Docker帮助我们解决服务的打包安装的问题,随着而来的问题就是服务过多的带来如下问题:

1、多次使用 Dockerfile、Build、Image 命令或者 DockerHub 拉取 Image;

2、需要创建多个Container,多次编写启动命令;

3、Container互相依赖的如何进行管理和编排;

当我们服务数量增多的时候,上面三个问题就会更加的被放大,如果这三个问题不解决,其实从虚拟机到容器化除了机器减少一些浪费以外,好像没有更多的变化

Docker有没有什么好的方法,可以让我们通过一个配置就搞定容器编排和运行呢?

这个时候Docker Compose就站出来了

Docker Compose可以做到以下几点:

①提供工具用于定义和运行多个docker容器应用;

②使用yaml文件来配置应用服务(docker-compse.yml);

③可以通过一个简单的命令docker-compse up可以按照依赖关系启动所有服务;

④可以通过一个简单的命令docker-compose down停止所有服务;

⑤当一个服务需要的时候,可以很简单地通过–scale进行扩容;

Docker Compose有以下特征:

更高的可移植性,Docker Compose仅需一个docker compse up可以完成按照依赖关系启动所有服务,然后使用docker compose down轻松将其拆解。帮助我们更轻松地部署复杂的应用程序;

单个主机上的多个隔离环境,Compose可以使用项目名称将环境彼此隔离,这带可以在一台计算机上运行同一环境的多个副本,它可以防止不同的项目和服务相互干扰;

构建实验

首先准备好php和nginx的镜像,因为不运行什么复杂代码,随便版本都可以

然后编写docker compose文件,要以写compose.yaml作为才能识别,不然就得指定文件

然后编写compose.yaml文件

[root@server159 nginx]# cat compose.yaml
version: "3.8"
services:nginx:image: "nginx:latest"restart: always#刚才创建的桥接网络networks: ["ngx-php"]#映射端口ports: ["80:80"]#将nginx挂载替换nginx的配置文件volumes:- type: bindsource: ./default.conf target: /etc/nginx/conf.d/default.confphp-fpm:image: "php-fpm-3:7.4.30"networks: ["ngx-php"]configs:- source: phpconfigtarget: /www/index.php
#创建一个桥接网络
networks:ngx-php:driver: bridge
#docker compose最近的版本才支持的,以前的老版本是没有的,也相当于volume用法
configs:phpconfig:file: ./index.php

然后编写nginx配置文件,注意php-fpm为compose.yaml文件里定义的容器名

[root@server159 nginx]# cat default.conf 
server {listen       80;listen  [::]:80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}location ~ \.php$ {fastcgi_pass   php-fpm:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;include        fastcgi_params;}
}

然后编写index.php测试文件

[root@server159 nginx]# cat index.php
<?php
phpinfo();
?>

然后文件就编写完成了

[root@server159 nginx]# ls
default.conf  compose.yaml  index.php

然后docker compose开始构建容器

[root@server159 nginx]# docker compose up -d
[+] Running 3/3✔ Network nginx_test         Created                                   0.0s ✔ Container nginx-php-fpm-1  Started                                   0.0s ✔ Container nginx-nginx-1    Started                                   0.0s 

查看我们容器的启动情况,可以看到两个容器都启动,然后去浏览器查看

[root@server159 nginx]# docker compose ps
NAME              IMAGE              COMMAND                                                                          SERVICE   CREATED          STATUS          PORTS
nginx-nginx-1     nginx:latest       "/docker-entrypoint.sh nginx -g 'daemon off;'"                                   nginx     42 seconds ago   Up 42 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp
nginx-php-fpm-1   php-fpm-3:7.4.30   "/bin/sh -c '/bin/bash -c \"/etc/init.d/php-fpm start && tail -f /dev/null\"'"   php-fpm   42 seconds ago   Up 42 seconds   

在这里插入图片描述

可以看到是能解析出php的

所以容器间的通信就完成,跟在linux上的没什么区别

docker compos 容器编排就是这样了再加mysql就可以组成LNMP架构了

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

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

相关文章

使用VBA打印PDF文件

使用VBA打印工作表和工作簿文件都很容易实现&#xff0c;但是有时需要使用VBA打印已经保存在本机的其他文件&#xff0c;例如PDF文件格式的账单&#xff0c;如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。 调用Windows的Shell命令可以实现打印PDF文件。 示例代码…

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化&#xff0c;需要依靠人工巡检或者排查的方式&#xff0c;这不仅加大了人员的工作量&#xff0c;而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况&#xff0c;都会降低市政府对排水管网的管理能力&a…

SpringBoot配置文件优先级

1.idea临时属性 说明&#xff1a;Program arguments配置--server.port8082 --ab&#xff1b;意思是将端口改成了8082。这个优先级最高。 2.resource 说明&#xff1a;创建config文件里面的yml文件。 3.jar包同级&#xff08;yml&#xff09; 说明&#xff1a;创建一个yml文件…

如何去除视频水印?三种简便有效的方法解决视频水印问题

在当今社交媒体时代&#xff0c;视频分享已成为一种流行趋势。然而&#xff0c;很多人在分享自己的作品时却苦于视频上存在的水印&#xff0c;水印通常是出于版权保护或品牌推广的目的而添加到视频中的&#xff0c;但有时它们可能会对用户体验造成负面影响。 如果您正在寻找如何…

golang gorm通过泛型实现通用单表增删改

golang gorm通过泛型实现通用单表增删改 无废话&#xff0c;直接上代码 想实现通用&#xff0c;首先得实现查询的通用&#xff0c;可以用传递map实现 func Where(where map[string]interface{}) func(db *gorm.DB) *gorm.DB {return func(db *gorm.DB) *gorm.DB {dbTmp : db…

Linux 脚本周期性监控进程是否存在,不存在就启动

以监控节点上的“Elasticsearch”进程为例&#xff0c;下面的脚本实现了周期性监控该进程是否存在&#xff0c;不存在就执行对应命令启动进程功能。 #!/bin/bash# 设置要检查的进程名称 PROCESS_NAME"Elasticsearch"# 定义一个函数来检查进程是否运行 check_process…

渗透工具使用及思路总结(持续更新)

扫描类 nmap 快速扫描开放端口 nmap --min-rate 10000 -p- 10.129.252.63扫描详细全服务 nmap -sV -A -p 22,80 10.129.252.63 nmap -sV -A -p- 10.129.252.63-l:显示正在监听的 TCP 和 UDP 端口; -a:显示所有活动的 TCP 连接; -A <网络类型>或 - <网络类型&g…

苹果加大对印度的扶持,提高在其生产iphone的比重

KlipC报道&#xff1a;跟踪苹果产业链&#xff0c;有分析师预计2023年全球约12%-14%的iphone在印度生产&#xff0c;预计2024年&#xff0c;印度将生产20%-25%的iphone。 KlipC的合伙人Andi D表示&#xff1a;“近年来随着苹果对中国的以来&#xff0c;印度已经成为高科技制造和…

0003Java安卓程序设计-springboot基于Android的学习生活交流APP

文章目录 **摘** **要**目 录系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 网络的广泛应用给生活带来了十分的便利。所以把学习生活交流管理与现在网络相结合&#xff0c;利用java技术建设学习生活交流APP&…

[PyTorch][chapter 59][强化学习-2-有模型学习]

前言&#xff1a; 在已知模型的环境里面学习,称为有模型学习&#xff08;model-based learning&#xff09;. 此刻,下列参数是已知的&#xff1a; : 在状态x 下面,执行动作a ,转移到状态 的概率 : 在状态x 下面,执行动作a ,转移到 的奖赏 有模型强化学习的应用案例 …

解决vmware安装ubuntu虚拟机显示不全以及无法实现windows与虚拟机之间无法相互复制粘贴问题

01、存在问题 02、解决方案 sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop reboot //重启重启后界面如下&#xff1a; 存在Bug 如果遇到一下问题&#xff0c;请先执行下列命令&#x…

.NET Framework中自带的泛型委托Func

Func<>是.NET Framework中自带的泛型委托&#xff0c;可以接收一个或多个输入参数&#xff0c;并且有返回值&#xff0c;和Action类似&#xff0c;.NET基类库也提供了多达16个输入参数的Func委托&#xff0c;输出参数只有1个。 1、Func泛型委托 .NET Framework为我们提…

陕西某小型水库雨水情测报及大坝安全监测项目案例

项目背景 根据《陕西省小型病险水库除险加固项目管理办法》、《陕西省小型水库雨水情测报和大坝安全监测设施建设与运行管理办法》的要求&#xff0c;为保障水库安全运行&#xff0c;对全省小型病险水库除险加固&#xff0c;建设完善雨水情测报、监测预警、防汛道路、通讯设备、…

JavaScript设计模式之装饰器模式

装饰器模式比继承更轻便&#xff0c;不改变原有对象的方法&#xff0c;在原有方法的前面或者后面添加一些点缀功能。 ES6写法 装饰class const logWrapper targetClass > {const oldRender targetClass.prototype.rendertargetClass.prototype.render () > {consol…

【word技巧】ABCD选项如何对齐?

使用word文件制作试卷&#xff0c;如何将ABCD选项全部设置对齐&#xff1f;除了一直按空格或者Tab键以外&#xff0c;还有其他方法吗&#xff1f;今天分享如何将ABCD选项对齐。 首先&#xff0c;我们打开【替换和查找】&#xff0c;在查找内容输入空格&#xff0c;然后点击全部…

回溯算法--4后问题

1.问题描述 四皇后问题&#xff1a;在4 4 的方格棋盘上放置4个皇后&#xff0c;使得没有两个皇后在同一行、同一列、也不在同一条45度的斜线上。问有多少种可能的布局&#xff1f; 解是4维向量 比如上面这个解<2,4,1,3> 分别表示圆圈的第2列、第4列等 还可以得到另一解…

iOS——FMDB的介绍与使用

什么是FMDB FMDB是iOS平台用OC语言封装了SQLite API的数据库框架&#xff0c;其优点是&#xff1a; 面向对象&#xff0c;使用了oc语言&#xff0c;避免了和c打交道FMDB是轻量级框架&#xff0c;使用更加灵活、方便提供了多线程的方式来操作数据库&#xff0c;可以防止多线程…

javaSE学习笔记-未完

目录 前言 一、java基础 1.1概述 1.java语言发展史 2.Java语言版本 3.Java语言平台 4.Java语言特点 5.Java语言跨平台原理-可移植性 6.JRE和JDK的概述 7.JDK的下载和安装 8.JDK安装路径下的目录解释 9.path环境变量的作用及配置方式 10.classpath环境变量的作用及…

包装印刷行业万界星空科技云MES解决方案

印刷业的机械化程度在国内制造行业内算是比较高的&#xff0c;不算是劳动密集型企业。如书本的装订、包装的模切、烫金、糊盒等都已经有了全自动设备。印刷厂除了部分手工必须采用人工外&#xff0c;大部分都可以采用机器&#xff0c;也就意味着可以由少量工人生产出大量产品。…

Java Jar 包还不知道怎么反编译,赶紧看看这个 IDEA 插件!

前言 当我们使用 Java 开发时&#xff0c;经常会遇到一种情况&#xff1a;我们拿到了一个 JAR 文件&#xff0c;但是却没有源代码。这时候&#xff0c;我们就需要使用反编译工具来帮助我们还原出源代码。 反编译工具可以将编译后的 JAR 文件转换回可读的 Java 源代码。这样&a…