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.hqwc.cn/news/160032.html

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

相关文章

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…

Go语言集成开发环境(IDE):GoLand 2023中文

GoLand 2023是一款由JetBrains开发的现代化、功能丰富的Go语言集成开发环境&#xff08;IDE&#xff09;。它提供了智能代码提示和自动完成、强大的内置调试器以及代码重构工具&#xff0c;帮助开发者提高编码效率并确保代码质量。GoLand 2023还支持多种版本控制系统&#xff0…

力扣:有效的括号

自己编写的代码 。 自己的思路&#xff1a; class Solution { private:unordered_map<char,int>symbolValues{{(,1},{),2},{{,4},{},5},{[,8},{],9}, };public:bool isValid(string s) {bool flagfalse;int lenss.length();if (lens % 2 ! 0){flag false;}for…

【深度学习基础】专业术语汇总(欠拟合和过拟合、泛化能力与迁移学习、调参和超参数、训练集、测试集和验证集)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

stm32 DMA

目录 简介 框图 DMA请求 DMA通道 DMA优先级 DMA 数据 外设到存储器 存储器到外设 存储器到存储器 传多少&#xff0c;单位是什么 传输完成 hal库代码 标准库代码 简介 CPU根据代码内容执行指令&#xff0c;这些众多指令中&#xff0c;有的用于计算、有的用于控制程…

YOLO算法改进6【中阶改进篇】:depthwise separable convolution轻量化C3

常规卷积操作 对于一张55像素、三通道&#xff08;shape为553&#xff09;&#xff0c;经过33卷积核的卷积层&#xff08;假设输出通道数为4&#xff0c;则卷积核shape为3334&#xff0c;最终输出4个Feature Map&#xff0c;如果有same padding则尺寸与输入层相同&#xff08;…

基于LDA主题+协同过滤+矩阵分解算法的智能电影推荐系统——机器学习算法应用(含python、JavaScript工程源码)+MovieLens数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据爬取及处理2. 模型训练及保存1&#xff09;协同过滤2&#xff09;矩阵分解3&#xff09;LDA主题模型 3. 接口实现1&#xff09;流行电影推荐2&#xff09;相邻用户推荐3&#xff09;相似内容推荐 相关其它博…

黑马程序员项目-黑马点评

黑马点评1 短信登录 基于Session实现登录流程 发送验证码&#xff1a; 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff0c;如果不合法&#xff0c;则要求用户重新输入手机号 如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行…

KaiwuDB 内核解析 - SQL 查询的生命周期

一、概述 KaiwuDB 内核解析系列共分上下两部分&#xff0c;本文是该系列的第一部分&#xff0c;主要涵盖了网络协议到 SQL 执行器&#xff0c;解释 KaiwuDB 如何执行 SQL 查询&#xff0c;包括系统各个组件的执行路径&#xff08;网络协议、SQL 会话管理、解析器、执行计划及优…

服务器数据恢复—Zfs文件系统下文件被误删除的如何恢复数据?

服务器故障&#xff1a; 一台zfs文件系统服务器&#xff0c;管理员误操作删除服务器上的数据。 服务器数据恢复过程&#xff1a; 1、将故障服务器所有磁盘编号后取出&#xff0c;硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做扇区级别的镜像备…

单链表基本操作的实现,初始化,头插,尾插,判空,获取个数,查找,删除,获取前置和后置位,清空,销毁

目录 一.单链表的设计 二.单链表的实现 三.单链表的总结 一.单链表的设计 1.单链表的结构定义: typedef struct Node{int data;//数据域struct Node* next;//后继指针}Node,*List; 2.单链表的设计示意图: 3.注意,单链表的最后一个节点的next域为NULL; 4.为什么要有一个头…

0006Java安卓程序设计-ssm基于Android的校园二手商品交易平台

文章目录 **摘** **要****目** **录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 随着毕业季的来临以及当代大学生的消费力购买力的不断增强&#xff0c;我们的寝室中囤积了很多二手商品&#xff0c;有很多是…