10. Docker Swarm(一)

这篇具有很好参考价值的文章主要介绍了10. Docker Swarm(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、前言

2、Docker Swarm体系架构

2.1、简单介绍

2.2、体系架构

3、简单使用

3.1、环境准备

3.2、初始化master节点

3.3、建立worker节点

3.4、查看集群的节点信息

3.5、部署应用

3.5.1、创建Dockerfile文件

3.5.2、构建镜像

3.5.3、将镜像上传到Docker仓库

3.5.4、Swarm集群中部署应用

3.5.5、查看服务信息

3.5.6、访问地址

3.5.7、动态伸缩


1、前言

上篇文章中我们讲到了Docker Compose来作为服务编排的工具,而Docker Compose只是用于单个宿主机上创建多个容器而进行服务编排的工具;而实际大型集群项目中,会面临多个服务器或宿主机上创建容器,从而组成集群提供相应的服务,而这时候就需要另一个服务编排工具Docker Swarm。

2、Docker Swarm体系架构

2.1、简单介绍

Docker Swarm是Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 宿主机抽象为一个整体,并通过一个入口统一管理这些 Docker 宿主机上的各种 Docker 资源。

Docker Swarm和Kubernetes 比较类似,但是它更加轻量级,且有的功能较 Kubernetes 少一些。有了Docker Swarm 集群,便可以实现应用的负载均衡与失败迁移功能。

Dockere 1.12.0版本开始,已经将Docker Swarm集成了,因此要使用他无需单独安装。而Docker Swarm本身内置了服务发现功能,因此也无需进行服务发现配置。

2.2、体系架构

Docker Swarm 集群是一个主从架构。其中有一个Swarm Manager 节点用来管理集群中的容器资源。Swarm Manager 节点对外暴露操作的接口,外部的用户可以通过该接口来实现对集群的管理。用户也可以通过 Swarm Manager 节点向集群发出操作指令。对于较大规模的 Docker 集群,可以将 Swarm Manager 单独部署到一台服务器上,从而提高其性能。Swarm Node 节点从 Swarm Manager 节点接收命令,从而创建相应的容器来运行应用。但是,用户只能笼统地向集群发出指令,而不能具体分配某台服务器干什么(这是由Swarm Manager节点上的Scheduler调度器完成的)。

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

3、简单使用

3.1、环境准备

准备3台虚拟机:

  • Master:安装了Docker 1.13.1,IP地址为:192.168.74.132
  • Node1:安装了Docker 1.13.1,IP地址为:192.168.74.133
  • Node2:安装了Docker 1.13.1,IP地址为:192.168.74.134

3.2、初始化master节点

先在master节点上初始化集群:

docker swarm init --listen-addr 192.168.74.132:8888 --advertise-addr 192.168.74.132
  • --listen-addr:集群暴露给外部调用的Http API的socket地址。
  • --advertise-addr:当宿主机有多网卡时,该参数用于指定绑定的网卡地址。

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

启动成功后,如上图所示。如果已经启动成功的,可以通过命令查看这部分信息:

docker swarm join-token manager

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

3.3、建立worker节点

将Node1和Node2节点作为worker加入Swarm集群:

docker swarm join --token SWMTKN-1-44rfzzzo532rkk6s9oi1eipmbuqa6f5lcz6nif4y41ynbggnh4-095o1oqhivebg57dtuwim6mep 192.168.74.132:8888

这里需要用到master节点的token,IP地址,和端口。

建立过程中可能遇到的问题:

  1. 问题1、--cluster-store and --cluster-advertise daemon configurations are incompatible with swarm mode
[root@192 pengyaohuang]# docker swarm join --token SWMTKN-1-44rfzzzo532rkk6s9oi1eipmbuqa6f5lcz6nif4y41ynbggnh4-095o1oqhivebg57dtuwim6mep 192.168.74.132:8888
Error response from daemon: --cluster-store and --cluster-advertise daemon configurations are incompatible with swarm mode

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

解决办法:检查docker配置文件是否配置了远程访问或者注册中心等配置,删除即可。我这边是因为前面配置了zookeeper相关信息导致。

  1. 问题2、can't initialize raft node
[root@192 pengyaohuang]# docker swarm join --token SWMTKN-1-44rfzzzo532rkk6s9oi1eipmbuqa6f5lcz6nif4y41ynbggnh4-095o1oqhivebg57dtuwim6mep 192.168.74.132:8888
Error response from daemon: can't initialize raft node: rpc error: code = 2 desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = 14 desc = grpc: the connection is unavailable

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

解决办法:查看防火墙是否开启。关闭防火墙即可:

systemctl stop firewalld

节点加入成功后的提示:

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

3.4、查看集群的节点信息

在master节点上查看集群节点信息:

docker node ls

可以看到分别有3个节点,2个节点为Reachable状态,一个为Leader状态。而Leader状态的节点ID后带了*号,这个表示该节点为master节点。

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

这里需要注意的是,master节点也作为worker节点。因此这里总共是有1个master节点,3个worker节点。

到此基本的集群环境就已经构建完成了。

3.5、部署应用

集群环境构建完成后,我们开始部署应用。

3.5.1、创建Dockerfile文件

[root@192 docker_swarm]# vim Dockerfile 
FROM nginx
RUN echo '<h1> My first Swarm demo, version: 1</h1>' > /usr/share/nginx/html/index.html

3.5.2、构建镜像

# 1表示我们的版本号
# 等下要上传到我们的docker hub上,因此这里镜像加上我们的仓库名
docker build -t pengyaohuang/swarm_nginx_demo:1 .

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

3.5.3、将镜像上传到Docker仓库

登录Docker Hub。

docker login

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

输入账号密码后,就提示登录成功。

将镜像上传到仓库中。

docker push pengyaohuang/swarm_nginx_demo:1

这样,就上传成功啦。

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

而仓库上也有了我们刚推上去的镜像。

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

3.5.4、Swarm集群中部署应用

docker service create -p 8080:80 --replicas 3 --name swarm_demo pengyaohuang/swarm_nginx_demo:1

这里参数表示:

  • -p: 端口映射,这里将容器80端口映射到宿主机8080端口
  • --replicas:副本数量,即启动的容器数量,这里启动3个
  • --name:容器名称

3.5.5、查看服务信息

# 查看部署的服务列表
docker service ls

# 查看服务的详细信息
docker service ps

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

由于我这里集群错误了一个节点,因此这里只能看到2个副本。具体失败原因,还有待查看。

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

3.5.6、访问地址

浏览器访问地址:http://192.168.74.192:8080,查看效果:

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

可以看到,就算我们的Node2节点部署失败了,我们整个项目依然是可以正常访问。这也就说明了集群的高可用。

3.5.7、动态伸缩

使用docker swarm我们还可以动态的对我们的服务进行扩容和缩容。如以下命令,我需要将当前容器的副本改为5:

docker service scale swarm_demo=5

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

也可以减少为1:

docker service scale swarm_demo=1

10. Docker Swarm(一),云原生,docker,java,云原生,linux,容器,运维

还是很方便的。文章来源地址https://www.toymoban.com/news/detail-642089.html

到了这里,关于10. Docker Swarm(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 10. Docker Swarm(一)

    目录 1、前言 2、Docker Swarm体系架构 2.1、简单介绍 2.2、体系架构 3、简单使用 3.1、环境准备 3.2、初始化master节点 3.3、建立worker节点 3.4、查看集群的节点信息 3.5、部署应用 3.5.1、创建Dockerfile文件 3.5.2、构建镜像 3.5.3、将镜像上传到Docker仓库 3.5.4、Swarm集群中部署应用 3.5.5、查

    2024年02月13日
    浏览(49)
  • Docker Swarm: 容器编排的力量和优势深度解析

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:大数据系列 ✨文章内容:Docker Swarm 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 在现代应用开发和部署中,容器化技术以其轻量、可移

    2024年02月01日
    浏览(50)
  • Docker可视化容器监控工具portainer.io(docker监控docker)(Docker Standalone、Docker Swarm、Kubernetes、ACI、Nomad)监控容器

    Ubuntu上有一些流行的Docker容器监控服务,可以通过Web界面进行查看和管理。以下是一些常用的Docker容器监控工具: Portainer:Portainer是一个轻量级的Docker管理界面,提供了直观的Web界面来管理和监控Docker容器。它支持容器的创建、启动、停止、删除等操作,并提供了实时的容器

    2024年02月08日
    浏览(44)
  • 容器编排工具的比较:Kubernetes、Docker Swarm、Nomad

    随着容器化技术的普及,容器编排工具成为了现代应用部署和管理的重要组成部分。容器编排工具能够自动化容器的部署、扩展和管理,从而提高应用的可靠性和可伸缩性。在众多的容器编排工具中,Kubernetes、Docker Swarm和Nomad是三个备受关注的主要候选。本文将对这三个工具

    2024年02月09日
    浏览(57)
  • 【云原生】详细学习Docker-Swarm部署搭建和基本使用

      个人主页: 征服bug-CSDN博客 kubernetes专栏: 云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm         Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机,使得容器

    2024年02月13日
    浏览(49)
  • Docker Swarm实现容器的复制均衡及动态管理:详细过程版

    Swarm是一套较为简单的工具,用以管理Docker集群,使得Docker集群暴露给用户时相当于一个虚拟的整体。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(dockerclient in go, docker_py, docker等)均可以直接与Swarm通信。 Swarm的设计和其他Docker项目一样,遵

    2024年02月05日
    浏览(52)
  • Kubernetes、Docker Swarm和Rancher的特点 - 容器编排平台比较

    本文将介绍三种流行的容器编排平台:Kubernetes、Docker Swarm和Rancher。我们将比较它们的特点,包括架构、功能、性能和生态系统。通过了解这些平台的优势和劣势,读者可以更好地选择适合自己需求的容器编排平台。 随着容器技术的快速发展,容器编排平台的需求也日益增长

    2024年02月12日
    浏览(63)
  • Kubernetes VS Docker Swarm:选择适合自己的容器编排工具

    容器编排工具是一种自动化部署和管理容器的工具。 利用容器编排工具可以方便地解决容器化应用程序的部署、扩展和高可用性等问题。 Kubernetes 和 Docker Swarm 是目前最流行的两个容器编排工具,因此选用它们来进行比较。 1.1 Kubernetes 的来源和发展背景 Kubernetes 源于 Google 的

    2024年02月06日
    浏览(76)
  • 49学习容器管理平台 Docker Swarm 的基本概念和应用,包括节点管理、服务编排

    Docker Swarm 是 Docker 官方提供的容器编排工具,可以管理多个 Docker 节点,并支持自动化扩展、负载均衡等功能。下面是 Docker Swarm 的基本概念和使用方法,包括节点管理和服务编排。 在 Docker Swarm 中,一个或多个 Docker 节点组成一个 Swarm 集群,其中一个节点是 Swarm Manager,负责

    2024年02月05日
    浏览(46)
  • 在win10中下载桌面版的docker并在docker中搭建运行基于linux的容器

    在很多时候需要linux系统部署项目,在win10中安装虚拟机并在虚拟机中安装linux系统比较繁琐,可以利用win10自带的hyper-v的虚拟机管理工具,打开该虚拟机管理工具,安装docker,并在docker中安装linux,不仅操作方便,而且是轻量级的,维护方便。 2.1开启hyper-v(这是前提) 控制

    2024年03月14日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包