当前位置: 首页 > news >正文

Docker容器编排

文章目录

    • 基本概念
    • Docker Compose
    • Swarm分布式
      • Node
      • Task
      • service
      • 集群搭建
      • 弹性伸缩

基本概念

针对容器生命周期的管理,对容器生命周期进行更方便更快捷的方式进行管理。

  • 依赖管理:当一个容器必须在另一个容器运行完成后,才能运行时,就需要依赖管理
  • 副本数控制:容器有时候也需要集群,快速的对容器集群进行弹性伸缩
  • 配置共享:通过配置文件统一描述需要运行的服务相关信息,自动解析配置内容,并创建对应的服务

Docker Compose

  • 服务 services:需要运行的容器配置,可以理解为原先用docker run命令后面跟的一系列命令都可以写在里面。
  • 网络 network:docker-compose公共自定义网络管理,配置好后可以直接用这个网络配置,这个配置可以多容器使用。
  • 数据卷 volumes:统一数据卷管理,可以给多个sercice使用

下面是docker-compose.yaml文件

version: "3.3"
services: nginx-demo: image: "nginx"container_name: "nginx_compose"restart: "always"networks: - wolfcode_netvolumes:- /root/docker:/usr/share/nginx/htmlenvironment:APP_ENV: devdns:- 114.114.115.115ports:- "80:80"networks:wolfcode_net:driver: bridgeipam:driver: defaultconfig: - subnet: 188.18.0.0/16

在启动时,可以只启动一个服务

docker-compose create nginx-demo

因为这个nginx是依赖网络的,所以它的状态是退出的,要用以下命令运行所有服务

docker-compose up -d

想要批量创建这个容器时,需要用到scale,该命令可以扩容/缩容对应的容器

// 将容器扩容为3个
docker-compose scale nginx-demo=3
//将容器缩容为2个
docker-compose scale nginx-demo=2

请添加图片描述

Swarm分布式

docker swarm可以在多个服务器上创建集群服务,通过daemon引擎实现

  • 初始化节点
  • 加入节点
  • 退出节点

Node

运行在docker的主机可以主动初始化一个swarm集群或加入一个已经存在的集群,这样该主机就成为一个swarm集群的节点(Node)
节点分为管理(manager)节点和工作(worker)节点。
管理节点用于swarm集群的管理,一个集群可以有多个管理节点,但只有一个管理节点能成为leader,leader通过raft协议实现。通常第一个启动的节点是leader,后面启动的是follower

Task

任务(Task)是swarm中最小的调度单位,目前来说是一个单一的容器。

service

服务是一组任务的集合,服务定义了任务的属性‘

集群搭建

用如下命令创建一个集群

docker swarm init --advertise-addr 192.168.113.120

然后会提示想要加入该集群可以运行的命令

查看集群情况(只有管理节点能看)

docker node ls

弹性伸缩

在集群中创建服务

docker service create --replicas 3 -p 80:80 --name nginx_swarm nginx

查看服务信息

docker service inspect --pretty nginx_swarm

收缩容器

docker service update --replicas 2 nginx_swarm

在工作节点上退出集群

docker swarm leave
http://www.lryc.cn/news/227123.html

相关文章:

  • 计算机中丢失mfc140u.dll怎么解决
  • postman设置动态token, 每次登录更新token
  • 架构师范文(AI写作)两篇
  • 基于SSM的电子病历系统
  • 一次sougo workflow库的使用过程
  • macOS Big Sur(macos11版本)
  • 泛微E-Office信息泄露漏洞复现
  • -bash: sudo: command not found的解决方法
  • CMOS介绍
  • 《软件工程与计算》期末考试真题范例及答案
  • springboot高校全流程考勤系统-计算机毕设 附源码 27637
  • 大二第四周总结——用原生js封装一个分页器
  • 智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型
  • ARM Linux 基础学习 / 系统相关,文件系统,文件属性
  • nginx https 如何将部分路径转移到 http
  • 算法通关村第八关-白银挑战二叉树的深度和高度问题
  • 使用LogBack替换Log4j
  • 财务报告是什么
  • SOME/IP 协议介绍(四)RPC协议规范
  • PostgreSQL基础入门
  • Django 密码管理:安全实践与技术深入
  • 说说你对React Router的理解?常用的Router组件有哪些?
  • “可一学院”新课程《区块链企业应用》正式上线
  • Springboot---整合对象储存服务MinIO
  • HDRP图形入门:HDRP渲染管线depth翻转
  • uniapp——项目02
  • Go语言的Json序列化与反序列化、Goto语法、Tcp Socket通信
  • gitlab-ce-12.3.5 挖矿病毒及解决方案
  • 每日一题(LeetCode)----数组--移除元素(四)
  • 421. 数组中两个数的最大异或值/字典树【leetcode】