首页 > 其他分享 >Docker容器编排

Docker容器编排

时间:2023-08-10 23:46:11浏览次数:46  
标签:容器 compose swarm 节点 nginx 编排 集群 Docker docker

docker-compose

compose安装

Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址。运行以下命令以下载 Docker Compose 的当前稳定版本:

curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的 Compose,请替换 v2.20.2。
将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

创建软链:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

docker-compose version

image.png

nginx示例

docker-compose.yml配置案例如下,官方文档

version: "3.8"
services:
  nginx-demo:
    image: nginx
    restart: always
    networks:
      - network_test
    volumes:
      - /Users/wandaren/develop/docker-nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /Users/wandaren/develop/docker-nginx/log:/var/log/nginx
      - /Users/wandaren/develop/docker-nginx/html:/usr/share/nginx/html
    environment:
      APP_ENV: dev
    dns: 114.114.115.115
    ports: 
      - 80

networks:
  network_test:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 188.18.0.0/16

启动:

# 创建
docker-compose create nginx-demo
# 加载配置并启动
docker-compose up -d nginx-demo
# 重新读取配置内容
docker-compose up -d
# 启动
docker-compose start nginx-demo
# 停止
docker-compose stop nginx-demo
# 停止并删除
docker-compose down nginx-demo

image.png
动态扩容

docker-compose up -d --scale nginx-demo=2

image.png

Swarm(分布式)

简介

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
支持的工具包括但不限于以下各项:

  • Dokku
  • Docker Compose
  • Docker Machine
  • Jenkins

原理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

  • swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

image.png

使用

1、创建 swarm 集群管理节点(manager)

初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。

# 172.16.156.158为虚拟机本机ip
docker swarm init --advertise-addr 172.16.156.158

image.png
以上输出,证明已经初始化成功。需要把以下这行复制出来,在增加工作节点时会用到:

docker swarm join --token SWMTKN-1-4dq96unmcsz9v0m99vapdtegt5y0kym3ths69r6enlgofbgja7-7ml2skxa3y5x5cjly8uxfwoae 172.16.156.158:2377

2、创建 swarm 集群工作节点(worker)

分别进入两个机器里,指定添加至上一步中创建的集群,这里会用到上一步复制的内容。
image.png
image.png

3、查看集群信息

进入管理节点,执行:docker info 可以查看当前集群的信息。

docker info

image.png
通过画红圈的地方,可以知道当前运行的集群中,有三个节点,其中有一个是管理节点。
进入管理节点,执行:docker node ls 查看集群信息:

docker node ls

image.png

4、部署服务到集群中

注意:跟集群管理有关的任何操作,都是在管理节点上操作的。
以下例子,在一个工作节点上创建一个名为 nginx_swarm 的nginx服务,这里是随机指派给一个工作节点:

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

image.png
image.png

5、查看服务部署情况

查看 nginx_swarm 服务运行在哪个节点上,可以看到目前是在 wq 节点:

docker service ps nginx_swarm

image.png
查看 nginx_swarm 部署的具体信息:

docker service inspect --pretty nginx_swarm

image.png

6、扩展集群服务

调整节点个数

# docker service update --replicas <num> <service id/name>
docker service update --replicas 2 nginx_swarm

image.png
服务扩展

docker service scale nginx_swarm=3

image.png

7、滚动升级服务

以下实例,我们将介绍 redis 版本如何滚动升级至更高版本。
创建一个 3.0.6 版本的 redis。

docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6

滚动升级 redis

docker service update --image redis:3.0.7 redis

image.png

8、删除服务

docker service rm nginx_swarm

image.png

9、停止某个节点接收新的任务

停止节点001

docker node update --availability drain 001

image.png
注意:001 状态变为 Drain。不会影响到集群的服务,只是 001 节点不再接收新的任务,集群的负载能力有所下降。
可以通过以下命令重新激活节点:

docker node update --availability active 001

image.png

10、节点退出集群

docker swarm leave

image.png
image.png
删除退出集群的节点

docker node rm sysn25urcm4elywoiexiov431

image.png

标签:容器,compose,swarm,节点,nginx,编排,集群,Docker,docker
From: https://www.cnblogs.com/wandaren/p/17621901.html

相关文章

  • 使用eNSP,VMware搭建网络平台,Linux中通过Docker搭建应用管理系统,在eNSP中的主机里可以
    课程设计要求拓扑图部署过程总结1.课程设计要求使用eNSP,VMware搭建网络平台,Linux中通过Docker搭建应用管理系统,在eNSP中的主机里可以访问。2.拓扑图![](C:\Users\31223\Pictures\Screenshots\屏幕截图2023-08-10133154.png)设备:云,主机(client机)3.部署过程实验1:docke......
  • M1版本Mac通过Docker安装RocketMQ
    前言上一篇我通过docker安装到mac上的rocketmq,三个容器都启动成功,却无法通过ip:port进行访问,考虑到我的Mac版本是M1的原因,这次我们通过官网的项目重新编译来解决这个问题步骤一gitclonehttps://github.com/apache/rocketmq-docker.git 步骤二cdimage-buildshbuild-ima......
  • 软件测试|docker ps命令 管理和监视容器的利器
    简介Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。Docker提供了许多命令行工具,其中之一是dockerps命令。本文将深入介绍dockerps命令,解释其用途、参数和功能,以及如何使用该命令来管理和监视运行中的Docker容器。dockerps在Docker中,容器是运行应用程序的独立环境......
  • 软件测试|深入解析Docker Run命令:创建和启动容器的完全指南
    简介Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。其中一个最基本且重要的Docker命令是dockerrun,用于创建和启动容器。本文将详细解析dockerrun命令的用途、参数和示例,帮助您全面掌握创建和启动容器的过程。dockerrun在Docker中,容器是运行应用程序的独立环境。do......
  • docker初识
    docker什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题应用部署的环境问题大型项目组件较多,运行环境也......
  • 安装docker容器
    写在前面之前写过一篇关于docker安装的博客,那种方式安装有很多缺点。运行docker和使用docker的时候会产生多个进程,占用Linux主机的资源。于是,我找到了新的方式安装docker。重要的三个文件/usr/lib/systemd/system/docker.service/usr/lib/systemd/system/docker.socket/usr......
  • docker容器的使用
    删除docker容器dockerrmmysql批量删除已经停止的容器#方法一#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,sudodockerps-a|grepExited|awk'{print$1}'#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器sudodockerrm`dockerps-a|g......
  • docker overlay2是什么
    dockeroverlay2是Docker中的存储驱动之一,用于管理镜像和容器层的数据。它使用最小存储空间来存储像层这样的临时数据。overlay2本质上是多层存储驱动。它将镜像和容器层都视为独立的匿名临时文件系统。然后通过联合挂载将这些层组合成所需的最终文件系统。overlay2使用两个目......
  • docker 删除已停止的容器
    docker删除已停止的容器根据容器的状态,删除Exited状态的容器#根据容器的状态,删除Exited状态的容器sudodockerrm$(sudodockerps-qfstatus=exited)删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)sudodockerrm$(sudodockerps-a-q)查询所有......
  • docker-compose 安装MySQL(单实例)
    需求场景:在开发和测试环境中,或者研究型的环境,对于数据库的安全和稳定性可以稍低一些,那么我们可以通过docker快速部署MySQL服务,降低部署的时间成本。 vimdocker-compose.ymlversion:'3'services:mysql:restart:alwaysprivileged:trueimage:mysql:8.0......