Linux6.14 Docker Compose容器编排

news2024/12/23 22:09:38

文章目录

  • 计算机系统
    • 5G云计算
      • 第四章 LINUX Docker Compose容器编排
        • 一、Compose概述
          • 1.Docker Compose 的概述
          • 2.Docker Compose 三大的概念
        • 二、部署过程
          • 1.Docker Compose 环境安装
          • 2.YAML 文件格式及编写注意事项
          • 3.Docker Compose配置常用字段
          • 4.Docker Compose 常用命令
          • 5.Docker Compose 文件结构
          • 6.配置
            • 1)准备依赖文件
            • 2)编写配置文件docker-compose.yml

计算机系统

5G云计算

第四章 LINUX Docker Compose容器编排

一、Compose概述

1.Docker Compose 的概述

Docker-Compose项目是基于Python开发的Docker官方开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理

Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具。它允许用户使用YAML文件来定义应用程序的配置,包括容器的数量、容器之间的依效关系、环境变量、端口映射以及其他设置。然后,用户可以使用docker-compose命令来启动和管理这些容器

使用 Docker Compose 可以方便地管理多个容器,例如,可以同时启动一个Web服务器容器和一个数据库容器,并在它们之间建立网络连接。Docker Compose 还支持自定义网络,使得容器可以在不同的网络中进行通信

Docker Compose文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务,以及容器之间的依赖关系。例如,一个Web服务器服务可以包含一个或多个web 服务器容器,而这些容器又依赖于一个数据库容器

2.Docker Compose 三大的概念

Docker-Compose 将所管理的容器分为三层,分别是项目(project)、服务(service)以及容器(container)

Docker-Compose 运行目录下的所有文件组成一个项目,若无特殊指定项目名即为当前目录名

一个工程当中可包含多个服务,每个服务都包含一个名称、镜像、端口映射、环境变量、挂载点等信息

Docker-Compose 的项目配置文件默认为 docker-compose.yml,可通过环境变量 COMPSE_FILE 或 -f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器

Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(AM格式)来定义一组相关联的应用容器为一个项目(project)

二、部署过程

1.Docker Compose 环境安装

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose

###下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
###安装
chmod +x /usr/local/bin/docker-compose
###查看版本
docker-compose --version

在这里插入图片描述

2.YAML 文件格式及编写注意事项

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 json 数据描述语言,语法比 json 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来

使用 YAML 时需要注意下面事项

注意事项
大小写敏感
通过缩进表示层级关系
不支持制表符 tab 键缩进,只能使用空格缩进
缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
用 # 号注释
符号字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
如果包含特殊字符用单引号(‘’)引起来会作为普通字符串处理,双引号(“”): 特殊字符作为本身想表示的意思
3.Docker Compose配置常用字段
字段描述
build指定 Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile构建镜像上下文路径
context可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image指定镜像
command执行命令,覆盖容器启动后默认执行的命令
container_name指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment添加环境变量
networks加入网络,引用顶级networks下条目
network_mode设置容器的网络模式,如 host,bridge,…
ports暴露容器端口,与 -p 相同,但端口不能低于 60
volumes挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 ‘2’ 支持
hostname容器主机名
sysctls在容器内设置内核参数
links连接到另外一个容器,- 服务名称[:服务别名]
privileged用来给容器root权限,注意是不安全的,true | false
restart设置重启策略,no,always,no-failure,unless-stopped
depends_on在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出depends_on标签用于解决容器的依赖、启动先后的问题
php:
depends_on:
- apache
- mysql
4.Docker Compose 常用命令
字段描述
build重新构建服务
ps列出容器
up创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示正在运行的容器进程
logs查看服务容器的输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务
5.Docker Compose 文件结构
yum install -y tree
tree /opt/compose_nginx
/opt/compose_nginx/
├── docker-compose.yml				#创建模板脚本
├── nginx
    ├── Dockerfile					#创建容器脚本
    ├── nginx-1.24.0.tar.gz			#复制源码包
    └── html
        └── index.html			    #站点网页
        └── wordpress               #论坛目录
6.配置
1)准备依赖文件
###用上一篇LNMP的配置和目录及文件

准备Docker Compose的二进制文件,上传后修改权限并移动到/usr/local/bin目录下
cd /opt
docker-compose
chmod +x docker-compose
mv docker-compose /usr/local/bin/

在这里插入图片描述

2)编写配置文件docker-compose.yml
vim /opt/mylnmp/docker-compose.yml
version: '3'
services:
  nginx:
   build:
     context: ./nginx
     dockerfile: Dockerfile
   container_name: nginx
   ports:
   - 80:80
   volumes :
   - ./nginx/html:/usr/local/nginx/html
   networks:
     lnmp :
      ipv4_address: 172.18.0.10

  mysql:
   #build:
   #  context: ./mysgl
   #  dockerfile: Dockerfile
   image: mysql:lnmp
   container_name: mysql
   ports:
   - 3306:3306
   volumes :
   - db-data:/usr/local/mysql
   networks:
     lnmp :
      ipv4_address: 172.18.0.20
   privileged: true

  php:
   #build:
   #  context: ./php
   #  dockerfile: Dockerfile
   image: php:lnmp
   container_name: php
   ports:
   - 9000:9000
   volumes :
   - db-data:/usr/local/mysql
   - ./nginx/html:/usr/local/nginx/html
   networks:
     lnmp :
      ipv4_address: 172.18.0.30
   depends_on:
   - nginx
   - mysql

networks:
 lnmp :
   driver: bridge
   ipam:
    config:
    - subnet: 172.18.0.0/16
volumes:
 db-data:
 #web-data:


cd /opt/mylnmp/
docker-compose -f docker-compose.yml up -d
------------------------------------------------------------------
-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
------------------------------------------------------------------

docker ps -a
CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
2c0faededb85   php:lnmp       "/usr/local/php/sbin…"   15 seconds ago   Up 14 seconds   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   php
02f64893988e   mylnmp_nginx   "/usr/local/nginx/sb…"   35 seconds ago   Up 33 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp           nginx
6f19d97e3163   mysql:lnmp     "/usr/local/mysql/bi…"   35 seconds ago   Up 14 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   mysql


cd /opt/mylnmp/
docker-compose ps					#必须在docker-compose.yml所在目录执行此命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【C语言】常见的内存操作函数

目录 前言:1.memcpymemcpy函数介绍memcpy函数的模拟实现 2.memmovememmove函数介绍memmove函数的模拟实现 3.memcmp4.memset 前言: 紧接字符串函数,接下来介绍内存函数~~ ———————————————————— 1.memcpy memcpy函数介…

索尼移动硬盘数据丢失怎么办?索尼移动硬盘如何恢复数据

咨询案例:“我刚买的索尼移动硬盘,里面存了超多我的宝贝照片和视频。突然有一天,我发现这些数据全都不见了!心凉了半截,我该怎么办?” ——索尼移动硬盘是一种常用的存储设备,它具有大容量、便携…

微软亚研院提出模型基础架构RetNet或将成为Transformer有力继承者

作为全新的神经网络架构,RetNet 同时实现了良好的扩展结果、并行训练、低成本部署和高效推理。这些特性将使 RetNet 有可能成为继 Transformer 之后大语言模型基础网络架构的有力继承者。实验数据也显示,在语言建模任务上: RetNet 可以达到与…

视频内存过大如何压缩变小?这个压缩方法了解一下

在日常生活中,不管是日常随手拍的视频还是在工作中遇到的视频文件,在编辑处理的时候,如果视频的内存过大,不仅会占用很大的内存,在传送的时候也会花费很长时间,这时候将视频给压缩一下就可以很好的解决这一…

直播程序源码开发建设:洞察全局,数据统计与分析功能

在信息时代的浪潮席卷下,直播程序源码平台成为了信息时代下的优秀产物之一,通过直播程序源码平台,人们既可以去获取信息、收获快乐;又可以开启一个随时随地,一台智能手机就可以做的工作,直播工作&#xff0…

ResMLP:具有数据效率训练的图像分类前馈网络

文章目录 ResMLP: Feedforward networks for image classification with data-efficient training摘要本文方法代码实验结果 ResMLP: Feedforward networks for image classification with data-efficient training 摘要 我们提出了ResMLP,一个完全建立在多层感知…

Windows系统创建新用户

1、以管理员身份启动cmd 2、开启administrator管理员账户 输入命令: net user Administrator /active:yes 3、切换到administrator用户 点击账户头像可以看见 4、创建新用户 WinR 键打开dos窗口输入:control userpasswords2 在弹出的“用户账户”中点…

区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型

区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型 目录 区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRF随机森林分位数回归多变量时间序列区间…

MFC CList 类的使用

MFC提供CList 类; 类CList支持可按顺序或按值访问的非唯一对象的有序列表;CList 列表与双链接列表行为相似; 类型POSITION的变量是列表的关键字;可使用POSITION变量作为循环因子来顺序遍历列表,作为书签来保存位置&am…

深度学习推理和训练

优化和泛化 深度学习的根本问题是优化和泛化之间的对立。 • 优化(optimization)是指调节模型以在 训练数据 上得到最佳性能(即机器学习中的学习)。 • 泛化(generalization)是指训练好的模型在 前所未…

Python 面向对象(一)(成员方法、类和对象)

初识对象 生活中数据的组织 学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填 改为登记表,打印出来让学生自行填写: 程序中数据的组织 在程序中简单使用变量来记录学生信息 使用变量记录数据太乱了…

Python怎么将图片转换成base64编码

目录 什么是base64编码 Base64编码的特点 Base64编码的应用 Python怎么将图片转换成base64编码 什么是base64编码 Base64编码是一种将二进制数据转换为ASCII字符的编码方式。它是由MIME(Multipurpose Internet Mail Extensions)规范定义的&#xff0…

CAD转PDF怎么从彩色变成黑白?这个小技巧要掌握

CAD文件,也被称为CAD文档或CAD绘图文件,是一种专用的计算机辅助设计文件格式。它通常用于表示二维或三维设计图形和相关的几何属性。CAD文件可以在计算机辅助设计软件中打开和编辑。 通常由一个或多个图层组成,每个图层可以包含不同的颜色、线…

day37回溯算法

1.什么是回溯算法 回溯就是递归问题: 解决组合问题(无顺序),切割问题,子集问题,排列问题(顺序) 所有的回溯可以抽象为一棵树:树 宽度就是for循环大小 树深度就是回溯 vo…

HCIP——OSPF基础

OSPF基础 一、OSPF基础二、OSPF的区域划分三、OSPF的数据包hello包数据库描述包DBD包链路状态请求包LSR包链路状态更新包LSU包链路状态确认包LSAck包 四、OSPF的状态机五、OSPF的工作过程六、链路状态型的路由生成过程七、条件匹配五、OSPF数据包头部八、OSPF的接口网络类型 一…

C++的六大“天选之子“之“构造“与“析构“

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

【LeetCode】64.最小路径和

题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[1,3,1],[1,5,1],[4,2,1]] 输出&#…

离多态更近一步

在面向对象的语言里面,封装,继承,多态可谓是在熟悉不过了,当我们每次再去重新认识它们的时候总会有新的发现,为此我也经常感到疑惑,所以在这里和大家一起探讨三个问题,让我们在向多态靠近一点点。 虚表是否真的存在静态区 经常我们都会看见一个问题,虚表到底是存放…

使用show effective grants查看权限

1、问题描述 用户 show grants 显示只有连接权限,但该用户却能执行 sbtest.*下的所有操作 GreatSQL> \s ... Server version: 8.0.32-24 GreatSQL, Release 24, Revision 3714067bc8c ... GreatSQL> show grants; ---------------------------------------…

哪些在线工具能免费转换MP3格式?分享两个方法!

哪些在线工具能免费转换MP3格式?通常来说,MP3格式转换器都具备简洁的界面、便捷的操作以及强大的功能,它们可以将各种流行的视频或音频格式转换成MP3文件,甚至可以制作手机铃声。用户只需要在设置中设定录制时间,即可轻…