美文网首页
怎样创建 Docker 覆盖网络

怎样创建 Docker 覆盖网络

作者: 城北楠哥 | 来源:发表于2022-07-13 16:18 被阅读0次

概括

  当我们开始使用 Docker 时,典型的配置是在我们的桌面上创建一个独立的应用程序。

  在大多数情况下,在一台机器上运行所有应用程序通常是不切实际的,如果不是,您将需要一种将应用程序分布在多台机器上的方法。这就是 Docker Swarm 的用武之地。

  Docker Swarm 提供了集群、可扩展性、发现和安全等功能。在本文中,我们将创建一个基本的 Swarm 配置并执行一些实验来说明发现和连接性。

  在这个演示中,我们将创建一个由 Swarm 管理器和工作器组成的 Swarm 覆盖集群。为方便起见,它将在 AWS 中运行。

  架构

  我们的目标架构将包含几个在不同 EC2 主机上的 AWS AMI 映像中运行的 Docker 容器。这些示例的目的是演示如何使用 Docker 群来发现运行在不同主机上的服务并相互通信的概念。

  在我们上面的假设网络中,我们描述了一个 Docker 集群管理器和几个集群工作者的互连。在接下来的示例中,我们将使用单个经理和单个工作人员来保持较低的复杂性和成本。请记住,您的真实配置可能包含许多 swarm worker。

  下面是一个潜在用例的示例。一个 AWS 负载均衡器,配置为将负载分配到在 2 个或更多 EC2 实例上运行的 Docker 群。

  配置

  首先创建两 (2) 个 EC2 实例,然后在每个 EC2 实例上安装 Docker。有关您的实例的 Docker 安装指南和说明,请参阅Docker 支持的平台部分。

  以下是为支持 Docker Swarm 和我们的端口连接测试而开放的 AWS 端口:

  对于我们的示例,我们将使用以下 IP 地址来表示节点 1 和节点 2:

  节点 1:10.193.142.248

  节点 2:10.193.142.246

  在开始之前,让我们看一下现有的 Docker 网络。

  码头工人网络

  如果您从未在此 Docker 守护程序上添加网络或初始化 swarm,则网络列表的输出至少应如下所示。也可以显示其他网络。

  Docker 网络列表结果:

  从节点 1 开始,让我们从初始化 swarm 开始。

  创建 Swarm 主节点

  您应该得到如下所示的响应。我们将使用提供的令牌将我们的其他节点加入 swarm。

  swarm init 的结果

  “ Swarm initialized: current node (v9c2un5lqf7iapnv96uobag00) is now a manager.

  To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377

  To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.”

  根 CA 证书需要一两分钟才能通过 swarm 同步,因此如果出现错误,请等待几分钟,然后重试。

  如果您碰巧放错了令牌,您可以使用该 join-token参数列出经理和工人的令牌。例如,在节点 1 上,运行以下命令:

  节点 1 的管理器令牌

  接下来,让我们从节点 2 加入 swarm。

  节点 2 加入 Swarm

“dockerswarmjoin--tokenSWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377

  This node joined a swarm as a worker.”

  从节点 1,swarm master,我们现在可以查看连接的节点

  在 Master 上,列出所有节点

  列出节点的结果

  另外,请注意已经创建了一个 Ingress 网络,这为我们的 swarm 网络提供了一个入口点。

  Docker 网络列表结果

  让我们继续为独立容器创建我们的 Overlay 网络。

  在节点 1 上创建覆盖网络

  Docker 网络列表结果

  请注意将我们的新覆盖网络添加到 swarm 中。现在我们从节点 1 加入覆盖网络。

  运行我们的容器,加入 Overlay 网络

  从节点 2 加入覆盖网络,我们将打开端口 _8083_ 以测试与我们正在运行的容器的连接性。

  运行我们的容器,加入 Overlay 网络

  验证我们的覆盖网络连接

  随着我们的容器运行,我们可以测试我们是否可以使用由 swarm 配置的 DNS 来发现我们的主机。让我们从节点 2 ping 节点 1 容器。

  节点 2 Ping 节点 1,监听端口 8083

  从节点 1 ping 节点 2 容器并连接到它在端口8083上的 Open Listener

  节点 1 Ping 节点 2,连接到端口 8083 上的节点 2 侦听器

  有了它,您创建了从节点 1 到节点 2 的 tcp 连接并发送了一条消息。同样,您的服务在 Docker 覆盖集群中运行时可以连接并交换数据。

  有了这些基本构建块,您就可以将这些原则应用于实际设计。

  清理

  随着我们的测试完成,我们可以拆除 swarm 配置。

  移除节点 2 Swarm

  移除节点 1 Swarm

  这结束了我们创建 Docker 覆盖网络的简短示例。有了这些基本构建块,您现在就拥有了构建更大、更复杂的 Docker 容器交互所必需的基本部分。

  更多相关大咖视频课程请在苹果App Store 或各安卓市场下载“技福小咖”App学习。

相关文章

网友评论

      本文标题:怎样创建 Docker 覆盖网络

      本文链接:https://www.haomeiwen.com/subject/klktirtx.html