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: bind
        source: ./default.conf 
        target: /etc/nginx/conf.d/default.conf
  php-fpm:
    image: "php-fpm-3:7.4.30"
    networks: ["ngx-php"]
    configs:
      - source: phpconfig
        target: /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架构了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】多态 ⑫ ( 多继承 “ 弊端 “ | 多继承被禁用的场景 | 菱形继承结构的二义性 | 使用虚继承解决菱形继承结构的二义性 )

文章目录 一、多继承 " 弊端 "1、多继承被禁用的场景2、多继承弊端 二、代码示例 - 多继承弊端1、错误示例 - 菱形继承结构的二义性2、代码示例 - 使用虚继承解决菱形继承结构的二义性 一、多继承 " 弊端 " 1、多继承被禁用的场景 禁止使用多继承的场景 : …

C++ Qt 学习(二):常用控件使用与界面布局

1. Qt 布局详解 ui 设计器设计界面很方便&#xff0c;为什么还要手写代码&#xff1f; 更好的控制布局更好的设置 qss代码复用 完全不会写 Qt 布局&#xff0c;很麻烦&#xff0c;怎么学会手写布局&#xff1f; 看 Qt 自己怎么写改良 Qt 的布局写法 1.1 水平布局 #include …

C++笔记之vector的成员函数swap()和data()

C笔记之vector的成员函数swap()和data() 标准C中的std::vector类确实有swap()和data()这两个成员函数。下面是它们的简要描述&#xff1a; swap(): std::vector的swap()成员函数用于交换两个向量的内容&#xff0c;实现了高效的交换操作&#xff0c;不需要复制向量的元素。这…

Apache HttpClient库编写的Scala程序

Apache HttpClient库编写的Scala下载器程序&#xff0c;用于下载图片。代码如下&#xff1a; import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…

纠结蓝桥杯参加嵌入式还是单片机组?

纠结蓝桥杯参加嵌入式还是单片机组? 单片机包含于嵌入式&#xff0c;嵌入式不只是单片机。. 你只有浅浅的的单片机基础&#xff0c;只能报单片机了。最近很多小伙伴找我&#xff0c;说想要一些单片机资料&#xff0c;然后我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵…

MCU HardFault_Handler调试方法

一.获取内核寄存器的值 1.在MDK的DEBUG模式下&#xff0c;当程序出现跑飞后&#xff0c;确定卡死在HardFault_Handler中断处 2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP LR寄存器值堆栈寄存器0xFFFFFFF9MSP寄存器0xFFFFFFFDPSP寄存器 如下图所…

【SpringCloud Alibaba -- Nacos】Linux 搭建 Nacos 集群

搭建 Nacos 集群 架构 centos安装docker https://docs.docker.com/engine/install/centos/ 详细配置过程 MySql8 mysql数据库配置 数据库脚本 nacos/conf/nacos-mysql.sql Nacos2 application.properties 修改为mysql spring.datasource.platformmysqldb.num1 db.url…

中国等28个国家发布《布莱切利宣言》,鼓励AI以安全方式发展

英国时间11月1日&#xff0c;中国、美国、英国、法国、德国等28个国家和欧盟&#xff0c;在英国的布莱切利庄园签署了&#xff0c;首个全球性人工智能&#xff08;AI&#xff09;声明——《布莱切利宣言》。 该宣言明确指出了AI对人类社会的巨大机遇&#xff0c;但AI需要以人为…

Python 包管理器入门指南

什么是 PIP&#xff1f; PIP 是 Python 包管理器&#xff0c;用于管理 Python 包或模块。注意&#xff1a;如果您的 Python 版本是 3.4 或更高&#xff0c;PIP 已经默认安装了。 什么是包&#xff1f; 一个包包含了一个模块所需的所有文件。模块是您可以包含在项目中的 Pyth…

Chatgpt批量改写文章网页版可多开软件-自动登录换号生成word或者TXT

Chatgpt批量改写文章网页版可多开软件介绍&#xff1a; 1、改写后生成docx格式文档和生成txt文档二选一。 2、支持原来docx文档里带图片的改写&#xff0c;改写伪原创后的docx里也带图片。 3、软件可以设置是否开启标题改写&#xff0c;可以自定义标题改写指令。 4、可以设置…

全功能测试框架 - Carina

Carina是一个基于Java的测试自动化框架&#xff0c;它将所有测试层结合在一起&#xff1a;移动应用程序&#xff08;web、本机、混合&#xff09;、web应用程序、REST服务和数据库。 github&#xff1a;GitHub - zebrunner/carina: Carina automation framework (TestNG): Web…

ubuntu 20.04 + cuda-11.8 + cudnn-8.6+TensorRT-8.6

1、装显卡驱动 ubuntu20.04 cuda10.0 cudnn7.6.4_我是谁&#xff1f;&#xff1f;的博客-CSDN博客 查看支持的驱动版本&#xff1a; 查看本机显卡能够配置的驱动信息 luhost:/usr/local$ ubuntu-drivers devices/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 moda…

uniapp新建的vuecli项目启动报错并且打包失败的问题(已解决)

我的项目新建流程如下 运行之后就是如下报错 解决办法&#xff1a; 安装如下依赖&#xff1a; npm i postcss-loader autoprefixer8.0.0 npm run build 编译失败 安装如下依赖&#xff1a; npm install postcss8.2.2 最终package.json文件如下 {"name": "ls…

【STL】:list的模拟实现

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关list的模拟实现&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据…

asp.net docker-compose添加volume配置

打开docker-compose.override.yml下面添加 volumes:killsb-one-sqldata:external: false 服务下面添加volume配置 volumes:- "./dapr/config/social-client.json:/app/OidcSettings.json" 添加volume配置成功

图片复制上传,拖拽输入框上传,el-upload自定义上传方法(上传和备注框强关联)

1. 效果图&#xff1a; 2. 复制图片使用的方法&#xff1a; 1.通过监听paste方法&#xff0c;获取复制内容2.获取复制内容中的clipboardData3.获取file文件进行上传 <input paste.native"handlePaste" />handlePaste(value){let files value.clipboardData…

网络基础扫盲-初识网络

博客内容&#xff1a;初识网络 文章目录 一、OSI七层网络模型二、TCP/IP四层模型1、MAC地址与IP地址 前言 在以前网络不够发之前&#xff0c;各个实验室进行一些研究时需要进行数据的交流&#xff0c;但是那时车马很慢&#xff0c;一生只够跑几次&#xff0c;所以就有人研究了网…

Java医院HIS系统源码

Java医院HIS系统源码 项目描述 该项目是用springbootlayuishiro写的医院管理系统&#xff0c;该系统的业务比较复杂&#xff0c;数据库一共有36张表。项目的视频业务参考文档&#xff0c;都在百度云盘中。可以先看看视频和参考文档。 运行环境 jdk8mysqlIntelliJ IDEAmaven…

IntelliJ IDEA 2023 最新版如何试用?IntelliJ IDEA 2023最新版试用方法及验证ja-netfilter配置成功提示

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…