首页 > 网站 > 建站经验 > 正文

在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容

2019-11-02 16:53:44
字体:
来源:转载
供稿:网友

介绍

Docker Swarm是用于部署Docker主机集群的Docker本地解决方案。您可以使用它来快速部署在本地计算机或受支持的云平台上运行的Docker主机集群。

在Docker 1.12之前,设置和部署Docker主机集群需要使用外部键值存储(如etcd或Consul)来进行服务发现。但是,使用Docker 1.12,不再需要外部发现服务,因为Docker提供了一个内置的键值存储,可以开箱即用。

在本教程中,您将了解如何使用Docker 1.12上的Swarm功能部署一组Docker机器。集群中的每个Docker节点将运行Ubuntu 16.04。虽然您可以运行由数十,数百或数千个Docker主机组成的群集,但我们将在本教程中设置的群集将由一个管理器节点和两个工作节点组成,共有三个群集成员。完成本教程后,您可以轻松地向集群中添加更多节点。

先决条件

对于本教程,您需要:

安装了Docker的本地机器。您的本地计算机可以运行任何Linux发行版,甚至Windows或macOS。对于Windows和macOS,使用官方安装程序安装Docker。 如果您的本地计算机上运行了Ubuntu 16.04,但未安装Docker ,请参阅如何在Ubuntu 16.04上安装和使用Docker以获取相关说明。

DigitalOcean API令牌。如果没有,使用本指南生成它。生成令牌时,请确保它具有读写范围。这是默认值,因此如果您在生成它时不更改任何选项,它将具有读写能力。为了更容易在命令行中使用,请务必将令牌分配给该文章中给出的变量。

Docker Machine安装在本地计算机上,您将使用它来创建三台主机。 在Windows和macOS上,Docker安装包括Docker Machine。

第1步 配置群集节点

我们需要为集群创建几个Docker主机。 作为刷新程序,以下命令提供单个Docker化主机,其中$DOTOKEN是一个环境变量,其计算结果为您的DigitalOcean API令牌:

docker-machine create --driver digitalocean --digitalocean-image ubuntu-16-04-x64 --digitalocean-access-token $DOTOKEN machine-name

想象一下,必须设置一个由至少三个节点组成的集群,一次配置一个主机。

我们可以使用此命令并结合一些简单的Bash脚本自动化配置任何数量的Docker主机的过程。在本地机器上执行此命令以创建三个名为node-1 , node-2和node-3 Docker主机:

for i in 1 2 3; do docker-machine create --driver digitalocean /--digitalocean-image ubuntu-16-04-x64 /--digitalocean-access-token $DOTOKEN node-$i; done

命令成功完成后,您可以通过访问您的DigitalOcean仪表板或输入以下命令来验证是否已创建所有计算机:

docker-machine ls

输出应类似于以下内容,它应该作为查找节点的IP地址的快速参考:

OutputNAME ACTIVE DRIVER  STATE URL    SWARM DOCKER ERRORSnode-1 - digitalocean Running tcp://104.236.239.4:2376  v1.12.2 node-2 - digitalocean Running tcp://104.131.165.210:2376  v1.12.2 node-3 - digitalocean Running tcp://104.236.76.250:2376  v1.12.2

此时,所有三个Docker化主机已创建,并且您拥有每个主机的IP地址。他们也都运行Docker 1.12.x,但是还不是Docker集群的一部分。在接下来的步骤中,我们将配置防火墙规则,使节点成为集群成员,选择其中一个节点并将其作为Docker Swarm管理器,并将其余部分配置为Docker Swarm工作线程。

第2步 配置防火墙规则以允许Docker群交通

集群必须至少有一个节点作为管理器,但对于生产设置,建议使用三个管理器。对于此设置,让我们选择第一个节点,并将其设置为Swarm管理器。其他两个节点将是工作节点。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表