Docker Swarm入门:如何搭建原生态Docker集群

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 本文讲的是Docker Swarm入门:如何搭建原生态Docker集群【编者的话】我们已花大量时间研究Docker及亚马逊的弹性云计算(EC2)容器服务(ECS)组建Docker容器集群的解决方案。而本文将重点阐述通过Docker Swarm搭建原生态Docker集群的方法。
本文讲的是Docker Swarm入门:如何搭建原生态Docker集群【编者的话】我们已花大量时间研究Docker及亚马逊的弹性云计算(EC2)容器服务(ECS)组建Docker容器集群的解决方案。而本文将重点阐述通过Docker Swarm搭建原生态Docker集群的方法。

Docker Swarm介绍

Docker Swarm是Docker原生态的集群技术。他可同Docker或者Docker-Machine的命令行行工具配合,提供在主机集群上部署容器引擎的基本功能。Docker Swarm同亚马逊ECS在功能域上的确存在很大差异。

亚马逊ECS 利用自有技术栈来运行Docker容器,包括在虚拟宿主机上运行EC2实例,实现动态自动扩展和缩减虚拟机,使用弹性负载均衡器(ELB)将负载分发到各个Docker容器,等等。

从另一个角度讲,Docker Swarm还仅仅只是一个集群工具:通过Swarm来注册可运行Docker容器的服务器,然后Swarm将部署容器到这些虚拟机上,通过Swarm实现主机的启动和停止、注册和注销,并设置负载均衡策略注册和注销容器。

然而,亚马逊ECS 更倾向于在AWS环境中构建容器集群,Docker Swarm的确有能力运行在任何地方,包括在亚马逊之外。目前,许多组织接纳云计算较慢,或者运行在一种混合云环境中,让部分应用或实例运行在公有云上,剩余应用运行在本地的数据中心内。

因此,无论组织是否接纳了云平台,在混合云或纯数据中心环境中,采用Swarm均可发挥Docker的技术优势。

Docker Swarm是如何工作的?

实施Docker Swarm采用了两类组件:
  • 管理者容器:运行在一台虚拟机上,用来管理环境,实现发布容器到不同的代理,向集群报告容器状态及部署信息。他是Docker Swarm的主要接口;
  • 代理:是一组运行在虚拟机上的容器服务,负责向管理容器注册代理,并运行最终的Docker容器服务。

图1 展示了相关概念
fig-1dockerswarm-1024x812.png

这个例子中,采用了一个Docker Swarm管理者,管理了两个代理(代理1、代理2),这两个代理运行了两个Nginx容器实例,这里管理者和代理都属于“Docker Machine”,“Docker Machine”含有Docker引擎并可运行Docker容器。在下一节中将看到,除了启动命令一个使用 Docker Machine命令而另一个使用docker命令外,Docker Machine和Docker容器自身非常相似。

在下一节的例子中将会阐述如何在本机上搭建一个Docker Swarm集群(参考图1中Docker主机的方式(在笔记本上搭建的方式))。在生产环境下,管理者和代理一样可直接运行在各自的虚拟机上。

开始Docker Swarm之旅

现在已经理解Docker Swarm的概念及工作原理,本节将带您一步一步的构建本地Docker Swarm集群,并启动运行。

第一步安装Docker,您可在相关链接中找到在Mac、Windows、Linux环境下安装Docker的相关信息,在安装Docker时,需要使用Docker-Machine的命令,创建Swarm的管理者和代理。 Docker Swarm的文档是这么定义Docker Machine的:

Docker Machine是一种在虚拟宿主机上安装Docker引擎工具,通过使用Docker-Machine命令行来管理宿主机。您可在办公网、数据中心或者云提供商(如AWS 或Digital Ocean)内,使用此命令在本机调用Mac或Windows的Virtualbox创建容器主机。使用Docker-Machine命令行可实现启动、检查、停止和重启一个管理者主机,升级Docker客户端及守护进程,以及配置同主机通信的Docker客户端。

启动Docker并打开一个Docker-Machine命令行终端,执行Docker-Machine的 ls 命令可看到所有运行在电脑上的Docker主机:
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM default * virtualbox Running tcp://192.168.99.100:2376

我的电脑上,只设置了的运行在IP地址192.168.99.100的”默认“主机。由于需要创建并启动三个新的主机(1个管理者,2个代理),故需停止默认主机来确保本机资源:
$ docker-machine stop default

使用Docker-Machine create命令来创建三个Docker 主机:
$ docker-machine create -d virtualbox manager
$ docker-machine create -d virtualbox agent1
$ docker-machine create -d virtualbox agent2

至此,这些主机跟Swarm还没有任何关系,他们只是需要在电脑上运行的虚拟机,-d参数定义了创建主机的驱动。当创建主机时在本地运行时,驱动则应该是Virtualbox,执行Docker-Machine的 ls 命令可看到所有Docker主机:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
agent1 - virtualbox Running tcp://192.168.99.101:2376 v1.11.1
agent2 - virtualbox Running tcp://192.168.99.102:2376 v1.11.1 default - virtualbox Stopped Unknown
manager * virtualbox Running tcp://192.168.99.100:2376 v1.11.1

我们运行了三个主机,叫做管理者、代理1和代理2.在启动Swarm集群前,还需创建一个发现令牌,发现令牌是Swarm集群的唯一标识,使用令牌启动管理者,代理用令牌向管理者注册自己。

创建发现令牌

要创建发现令牌,需运行一个Docker Swarm容器的实例,并发送“创建”的命令参数。有趣的是,Docker Swarm是构建在Docker技术基础之上的,本节介绍内容包括:(1)创建发现令牌;(2)启动一个Swarm集群的管理者;(3)启动Swarm集群的代理;都将在一个预置的名叫“swarm”的Docker容器上执行。让我们继续探究。

Docker命令行工具用来向激活的主机发送命令,如上段命令中所示,“管理者”主机的“ACTIVE”列有一个星号,这意味着所有的Docker命令都要发送给这个管理者主机,下面介绍如何更改激活的主机。
首先建立一个发现令牌:
$ docker run --rm swarm create
Unable to find image 'swarm:latest' locally
latest: Pulling from library/swarm
eada7ab697d2: Pull complete
afaf40cb2366: Pull complete
7495da266907: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:12e3f7bdb86682733adf5351543487f581e1ccede5d85e1d5e0a7a62dcc88116
Status: Downloaded newer image for swarm:latest
7c14cbf2a86ecd490a7ea7ae4b795a6b

这行命令看着有些眼熟:
  • Docker run:运行指定的容器实例
  • “swarm”:是容器Docker 镜像的名字,用来创建容器。注意这里没有指定版本,因此默认为“swarm:latest”
  • “create”:是一个发送给“swarm”容器的命令
  • –rm:此命令参数告诉Docker执行完毕后删除Docker镜像,这意味着如果需要可重新下载此镜像,毕竟镜像占了空间。

在命令输出的最后一行就是发现令牌: 7c14cbf2a86ecd490a7ea7ae4b795a6b 。请保存,后续步骤需要使用。

后续文章将介绍如何启动Swarm管理者和代理。

原文链接:Getting Started with Docker Swarm: Part 1(翻译:Chilly)

原文发布时间为:2016-07-24

本文作者:Chilly

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Docker Swarm入门:如何搭建原生态Docker集群

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 虚拟化 数据中心
|
3天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm了解两者特点,助力选取合适容器编排工具
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
1天前
|
Docker 容器
docker部署omni_usdt 0.8.0版本私有链集群环境
docker部署omni_usdt 0.8.0版本私有链集群环境
|
3天前
|
Ubuntu 应用服务中间件 Shell
Docker入门
Docker入门
29 0
|
3天前
|
存储 Ubuntu Linux
Docker 从入门到实践:Docker介绍
Docker 从入门到实践:Docker介绍
|
3天前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
|
3天前
|
Kubernetes 负载均衡 调度
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
【5月更文挑战第8天】Docker Swarm 和 Kubernetes 是两大容器编排工具,各有优势。Docker Swarm 简单易用,适合小到中型规模,与 Docker 生态系统集成紧密;而 Kubernetes 功能强大,扩展性好,适用于大规模、复杂场景。选择时需考虑团队技术能力、应用需求及现有技术栈。Kubernetes 学习曲线较陡,Docker Swarm 则较平缓。
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
|
3天前
|
负载均衡 安全 数据安全/隐私保护
【Docker专栏】Docker Swarm集群管理详解
【5月更文挑战第7天】Docker Swarm是Docker的原生集群管理工具,用于将多个Docker主机整合为虚拟主机。其主要特点是服务发现、负载均衡、自动恢复和扩展性。Swarm由Manager(负责管理与控制)和Worker(运行服务)节点组成。创建Swarm集群涉及初始化、添加Worker节点及查看集群状态。服务部署包括创建、更新、扩展和缩减。Swarm还支持滚动更新、健康检查、网络管理和安全加密。本文概述了Swarm的基本功能,鼓励读者进一步探索其高级特性。
【Docker专栏】Docker Swarm集群管理详解
|
3天前
|
应用服务中间件 持续交付 nginx
【Docker专栏】Docker入门指南:快速构建你的第一个容器
【5月更文挑战第7天】Docker 入门指南:容器化应用利器。了解 Docker 核心概念——镜像、容器和仓库。安装 Docker 后,运行官方 `hello-world` 验证安装,再尝试运行 `nginx` Web 服务器。通过端口映射访问容器内服务,学习管理容器命令。创建自定义镜像,编写 Dockerfile,实现 Python Web 应用容器化。Docker 助力高效开发与运维,探索更多自动化部署与微服务场景。
【Docker专栏】Docker入门指南:快速构建你的第一个容器
|
3天前
|
安全 Linux 数据库
Docker 入门详解
通过遵循这些步骤,你将能够快速入门 Docker 并开始探索容器化的世界,关注 V 哥,技术之路一起成长。