返回顶部
首页 > 资讯 > 精选 >Docker的引擎Swarm怎么用
  • 944
分享到

Docker的引擎Swarm怎么用

2023-06-27 11:06:03 944人浏览 薄情痞子
摘要

这篇文章主要介绍了Docker的引擎Swarm怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker的引擎Swarm怎么用文章都会有所收获,下面我们一起来看看吧。Swarm是Docker公司推出的用来

这篇文章主要介绍了Docker的引擎Swarm怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker的引擎Swarm怎么用文章都会有所收获,下面我们一起来看看吧。

Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用Go语言来完成的开发的, 它是将一群Docker宿主机变成一个单一的虚拟主机,Swarm使用标准的Docker api接口作为其前端的访问入口,换言之,各种形式的Docker

Client(compose,docker-py等)均可以直接与Swarm通信,甚至Docker本身都可以很容易的与Swarm集成,这大大方便了用户将原本基于单节点的系统移植到Swarm上,同时Swarm内置了对Docker网络插件的支持,用户也很容易的部署跨主机的容器集群服务。

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。

从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要像之前一样,再配置 Etcd 或者 Consul 来进行服务发现配置了。

n只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受Docker客户端发来的请求,调度适合的节点来运行容器,这就意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,放Swarm重新恢复运行之后,他会收集重建集群信息。

Docker的引擎Swarm怎么用

技术概要

如果把 Docker 详细而又好用的文档照搬到这里那将太丢人了,所以我将简要概括下这个技术的概要。我们已经有了 Docker,对吧。现在,你想要更多的服务器作为 Docker 主机,但同时你希望它们属于同一个逻辑上的实体。也就是说,你想建立一个集群。 Docker的引擎Swarm怎么用 

我们先从一个主机组成的集群开始。当你在一个主机上初始化一个 Swarm 集群,这台主机将成为这个集群的管理者manager。从技术角度来讲,它成为了共识组consensus group中的一个节点node。其背后的数学逻辑建立在 Raft 算法之上。管理者manager负责调度任务。而具体的任务则会委任给各个加入了 Swarm 集群的工作者worker节点。这些操作将由 Node API 所管理。虽说我讨厌 API 这个词汇,但我必须在这里用到它。

Service API 是这个实现中的第二个组件。它允许管理者manager节点在所有的 Swarm 集群节点上创建一个分布式的服务。这个服务可以被复制replicated,也就是说它们(LCTT 译注:指这些服务)会由平衡机制被分配到集群中(LCTT 译注:指 replicated 模式,多个容器实例将会自动调度任务到集群中的一些满足条件的节点),或者可以分配给全局(LCTT 译注:指 global 模式),也就是说每个节点都会运行一个容器实例。

配置镜像和服务

我将尝试配置一个负载均衡的 Apache 服务,并使用多个容器实例通过唯一的 IP 地址提供页面内容。挺标准的吧(LCTT 译注:指这个负载均衡的网页服务器)。这个例子同时也突出了你想要使用集群的大多数原因:可用性、冗余、横向扩展以及性能。当然,你同时需要考虑网络和储存这两块,但它们超出了这篇指南所涉及的范围了。

这个 Dockerfile 模板其实可以在官方镜像仓库里的 Httpd 下找到。你只需一个最简单的设置来起步。至于如何下载或创建自己的镜像,请参考我的入门指南,链接可以在这篇教程的顶部可以找到。

docker build -t my-apache2 .Sending build context to Docker daemon 2.048 kBStep 1 : FROM httpd:2.4Trying to pull repository docker.io/library/httpd ...2.4: Pulling from docker.io/library/httpd8ad8b3f87b37: Pull completec95e1f92326d: Pull complete96e8046a7a4e: Pull complete00a0d292c371: Pull complete3f7586acab34: Pull completeDigest: sha256:3ad4d7c4f1815bd1c16788a57f81b413...a915e50a0d3a4Status: Downloaded newer image for docker.io/httpd:2.4---> fe3336dd034dStep 2 : COPY ../public-html/ /usr/local/apache2/htdocs/...
Docker的引擎Swarm怎么用

Image created

在你继续下面的步骤之前,你应该确保你能无错误的启动一个容器实例并能链接到这个网页服务器上(LCTT 译注:使用下面的命令)。一旦你确保你能连上,我们就可以开始着手创建一个分布式的服务。

docker run -dit --name my-running-app my-apache2

将这个 IP 地址输入浏览器,看看会出现什么。

Swarm 初始化和配置

下一步就是启动 Swarm 集群了。你将需要这些最基础的命令来开始,它们与 Docker 博客中的例子非常相似:

docker service create --name frontend --replicas 5 -p 80:80/tcp my-apache2:latest

这里我们做了什么?我们创建了一个叫做 frontent 的服务,它有五个容器实例。同时我们还将主机的 80 端口和这些容器的 80 端口相绑定。我们将使用刚刚新创建的 Apache 镜像来做这个测试。然而,当你在自己的电脑上直接键入上面的指令时,你将看到下面的错误:

docker service create --name frontend --replicas 5 -p 80:80/tcp my-apache2:latestError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

这意味着你没有将你的主机(节点)配置成一个 Swarm 管理者manager。你可以在这台主机上初始化 Swarm 集群或是让它加入一个现有的集群。由于我们目前还没有一个现成的集群,我们将初始化它(LCTT 译注:指初始化 Swarm 集群并使当前节点成为 manager):

docker swarm initSwarm initialized: current node (dm58mmsczqemiikazbfyfwqpd) is now a manager.

为了向这个 Swarm 集群添加一个工作者worker,请执行下面的指令:

docker swarm join \--token SWMTKN-1-4ofd46a2nfyvrqwu8w5oeetukrbylyznxla9srf9vxkxysj4p8-eu5d68pu5f1ci66s7w4wjps1u \10.0.2.15:2377

为了向这个 Swarm 集群添加一个管理者manager,请执行 docker swarm join-token manager 并按照指示操作。

操作后的输出不用解释已经很清楚明了。我们成功的创建了一个 Swarm 集群。新的节点们将需要正确的令牌token来加入这个 Swarm 集群。如果你需要配置防火墙,你还需找到它的 IP 地址和端口(LCTT 译注:指 Docker 的 Swarm 模式通讯所需的端口,默认 2377)。此外,你还可以向 Swarm 集群中添加管理者节点。现在,重新执行刚刚的服务创建指令:

docker service create --name frontend --replicas 5 -p 80:80/tcp my-apache2:latest6lrx1vhxsar2i50is8arh5ud1

测试连通性

现在,我们来验证下我们的服务是否真的工作了。从某些方面讲,这很像我们在 Vagrant 和 coreOS 中做的事情那样。毕竟它们的原理几乎相同。相同指导思想的不同实现罢了(LCTT 译注:笔者观点,无法苟同)。首先需要确保 docker ps 能够给出正确的输出。你应该能看到所创建服务的多个容器副本。

docker psCONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS              NAMEScda532f67d55        my-apache2:latest   "httpd-foreground"  2 minutes ago       Up 2 minutes        80/tcp              frontend.1.2sobjfchdyucschtu2xw6ms9a75fe6e0aa77b        my-apache2:latest   "httpd-foreground"  2 minutes ago       Up 2 minutes        80/tcp              frontend.4.ag77Qtdeby9fyvif5v6c4zcpc3ce824d3151f        my-apache2:latest   "httpd-foreground"  2 minutes ago       Up 2 minutes        80/tcp              frontend.2.b6fqg6sf4hkeqs86ps4zjyq65eda01569181d        my-apache2:latest   "httpd-foreground"  2 minutes ago       Up 2 minutes        80/tcp              frontend.5.0rmei3zeeh8usagg7fn3olsp4497ef904e381        my-apache2:latest   "httpd-foreground"  2 minutes ago       Up 2 minutes        80/tcp              frontend.3.7m83qsilli5dk8rncw3u10g5a

我也测试了不同的、非常规的端口,它们都能正常工作。对于你如何连接服务器和收取请求你将会有很多可配置的余地。你可以使用 localhost 或者 Docker 网络接口(笔者注:应该是指 Docker 的默认网桥 docker0,其网关为 172.17.0.1) 的 IP 地址的正确端口去访问。下面的例子使用了端口 1080: Docker的引擎Swarm怎么用

Replicated WEB service works

至此,这是一个非常粗略、简单的开始。真正的挑战是创建一个优化过的、可扩展的服务,但是它们需要一个准确的技术用例。此外,你还会用到 docker info 和 docker service(还有 inspect 和 ps)命令来详细了解你的集群是如何工作的。

可能会遇到的问题

你可能会在把玩 Docker 和 Swarm 时遇到一些小的问题(也许没那么小)。比如 SElinux 也许会抱怨你正在执行一些非法的操作(LCTT 译注:指在强制访问控制策略中没有权限的操作)。然而,这些错误和警告应该不会对你造成太多阻碍。 Docker的引擎Swarm怎么用

SELinux alert

  • docker service 不是一条命令(docker service is not a docker command)当你尝试执行必须的命令去创建一个复制模式replicated的服务时,你可能会遇到一条错误说 docker: ‘service’ is not a docker command(LCTT 译注:见下面的例子)。这表示你的 Docker 版本不对(使用 -v 选项来检查)。我们将在将来的教程讨论如何修复这个问题。

    docker service create --name frontend --replicas 5 -p 80:80/tcp my-apache2:latestdocker: 'service' is not a docker command.
  • docker tag 无法识别(docker tag not recognized)你也许会看到下面的错误:

    docker service create -name frontend -replicas 5 -p 80:80/tcp my-apache2:latestError response from daemon: rpc error: code = 3 desc = ContainerSpec: "-name" is not a valid repository/tag

    关于这个错误已经有多个相关的讨论和帖子了。其实这个错误也许相当无辜。你也许是从浏览器粘贴的命令,在浏览器中的横线也许没被正确解析(笔者注:应该用 –name 而不是 -name)。就是这么简单的原因所导致的。

关于“Docker的引擎Swarm怎么用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Docker的引擎Swarm怎么用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Docker的引擎Swarm怎么用

本文链接: https://lsjlt.com/news/310229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Docker的引擎Swarm怎么用
    这篇文章主要介绍了Docker的引擎Swarm怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker的引擎Swarm怎么用文章都会有所收获,下面我们一起来看看吧。Swarm是Docker公司推出的用来...
    99+
    2023-06-27
  • Docker中swarm怎么用
    这篇文章给大家分享的是有关Docker中swarm怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。swarm 三台虚拟机 132,133,134初始化一个集群 并把自己加入集群中# 初始化主节点do...
    99+
    2023-06-25
  • docker swarm集群怎么部署
    要部署Docker Swarm集群,需要按照以下步骤进行操作:1. 安装Docker:在所有要加入Swarm集群的节点上安装Dock...
    99+
    2023-09-20
    docker
  • Docker Swarm集群怎么创建
    这篇文章主要介绍“Docker Swarm集群怎么创建”,在日常操作中,相信很多人在Docker Swarm集群怎么创建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker Swarm集群怎么创建”的疑...
    99+
    2023-06-27
  • 怎么在docker中运行docker swarm模式
    这篇文章将为大家详细讲解有关怎么在docker中运行docker swarm模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。安装docker使用yum安装更新yum源,sudo yum u...
    99+
    2023-06-07
  • 使用Docker Swarm搭建Wordpress的案例
    小编给大家分享一下使用Docker Swarm搭建Wordpress的案例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用 Docker Swarm 搭建 Wordpress起因我曾经把 wordpress 搭建在 Vu...
    99+
    2023-06-14
  • Docker Swarm在持续集成测试中怎么应用
    这篇文章主要介绍了Docker Swarm在持续集成测试中怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker Swarm在持续集成测试中怎么应用文章都会有所收获...
    99+
    2024-04-02
  • 怎么进行InnoDB引擎和MyISAM引擎的对比
    这期内容当中小编将会给大家带来有关怎么进行InnoDB引擎和MyISAM引擎的对比,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  ...
    99+
    2024-04-02
  • mysql存储引擎怎么用
    根据应用需求选择 mysql 存储引擎:需事务支持和并发控制:innodb重视性能:myisam快速访问,不需持久化:memory MySQL 存储引擎的选择 在设计 MySQL 数据...
    99+
    2024-05-30
    mysql 数据访问
  • 如何使用 Docker 引擎 SDK 和 Golang 运行 docker 安装卷
    php小编西瓜今天将为大家介绍如何使用Docker引擎SDK和Golang来运行docker安装卷。Docker是一种流行的容器化平台,而Docker引擎SDK则是与Docker引擎进...
    99+
    2024-02-09
    overflow
  • Thymeleaf模板引擎怎么使用
    今天小编给大家分享一下Thymeleaf模板引擎怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • 规则引擎Drools怎么应用
    本篇内容介绍了“规则引擎Drools怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!引入依赖我们创建一个spring boot应用程序...
    99+
    2023-07-05
  • mysql存储引擎怎么使用
    选择适合 mysql 应用程序的存储引擎至关重要,常用存储引擎及其特性如下:innodb:事务性、支持外键、崩溃恢复。myisam:旧引擎、不完全支持事务、高性能。memory:内存存储...
    99+
    2024-05-30
    mysql
  • 怎么查看mysql引擎
    这期内容当中小编将会给大家带来有关怎么查看mysql引擎,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。怎么查看mysql引擎1.在DOS窗口下运行 mysql -u...
    99+
    2024-04-02
  • hive使用spark引擎怎么配置
    要使用Spark引擎在Hive中进行配置,您可以按照以下步骤操作: 确保您已经正确安装了Spark并且Hive已经配置好。 ...
    99+
    2024-04-02
  • Groovy的规则脚本引擎怎么应用
    本篇内容介绍了“Groovy的规则脚本引擎怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.为什么用groovy作为规则引擎互联网时...
    99+
    2023-07-05
  • Nodejs中怎么使用模板引擎以及使用模板引擎渲染HTML
    这篇文章给大家分享的是有关Nodejs中怎么使用模板引擎以及使用模板引擎渲染HTML的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用readdir获取指定路径下的所有文件名文件...
    99+
    2024-04-02
  • javascript引擎的作用是什么
    这篇文章主要介绍javascript引擎的作用是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! JavaScript引擎用于将javascript代码...
    99+
    2024-04-02
  • MongoDB的存储引擎怎么选择
    MongoDB支持多种存储引擎,其中最常用的是WiredTiger和In-Memory存储引擎。WiredTiger是MongoDB...
    99+
    2024-05-07
    MongoDB
  • C#中Razor模板引擎怎么使用
    这篇文章主要讲解了“C#中Razor模板引擎怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中Razor模板引擎怎么使用”吧!使用视图引擎可以完成一些需要定制化内容格式的问题,比如...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作