Docker Swarm 集群搭建和使用

Docker 是一种流行的容器化技术,可以轻松地将应用程序打包成可移植的容器,以便在不同的环境中运行。Docker Swarm 则是 Docker 的一个集群管理工具,通过它可以轻松地管理多个 Docker 节点,实现高可用、负载均衡等功能。

本文将介绍如何使用 Docker Swarm 搭建一个集群,并展示如何在其中运行一个 Node.js 应用程序。

搭建 Docker Swarm 集群

搭建 Docker Swarm 集群需要准备多个 Docker 节点,这些节点可以位于同一台机器上,也可以分布在不同的机器上。在本文中,我们将在同一台机器上搭建一个包含 3 个节点的集群。

准备工作

在开始之前,需要先安装 Docker。可以参考 官方文档 安装 Docker。

初始化 Swarm

首先,需要在其中一个节点上初始化 Swarm。

------ ----- ----

执行命令后,会输出一个类似于下面的信息:

----- ------------ ------- ---- -------- -- --- - --------

-- --- - ------ -- ---- ------ --- --- --------- --------

    ------ ----- ---- ------- -------------- ------------------

-- --- - ------- -- ---- ------ --- ------- ----- ---------- -------- --- ------ --- -------------

其中,abc123 是当前节点的 ID,192.168.0.100 是当前节点的 IP 地址。这些信息将在后面的操作中用到。

加入集群

接下来,需要将其他节点加入到集群中。可以在其他节点上执行类似于下面的命令:

------ ----- ---- ------- -------------- ------------------

其中,SWMTKN-1-xxxxx 是初始化 Swarm 时生成的 token,192.168.0.100 是 Swarm manager 节点的 IP 地址。

如果一切正常,执行命令后会输出类似于下面的信息:

---- ---- ------ - ----- -- - -------

查看节点

可以使用下面的命令查看节点状态:

------ ---- --

执行命令后,会输出类似于下面的信息:

--                            --------            ------              ------------        ------- ------      ------ -------
-------                       -----               -----               ------              ------              -------
------                        -----               -----               ------                                  -------
------                        -----               -----               ------                                  -------

其中,* 表示当前节点为 Swarm manager 节点。

运行 Node.js 应用程序

接下来,将展示如何在 Swarm 集群中运行一个 Node.js 应用程序。

编写 Dockerfile

首先,需要编写一个 Dockerfile 文件,用于构建 Docker 镜像。

---- -------

------- ----

---- ------------- --
--- --- -------

---- - -

------ ----
--- - ------ ------- -

上面的 Dockerfile 中,首先指定了 Node.js 的版本。然后,将当前目录下的 package*.json 文件复制到 Docker 容器中,并执行 npm install 安装依赖。接着,将当前目录下的所有文件复制到 Docker 容器中。最后,指定了应用程序的监听端口为 3000,并执行 npm start 启动应用程序。

构建镜像

在完成 Dockerfile 编写之后,可以使用下面的命令构建 Docker 镜像:

------ ----- -- ----- -

其中,myapp 是镜像的名称,. 表示当前目录。

运行服务

接下来,可以使用下面的命令在 Swarm 集群中运行服务:

------ ------- ------ ------ ----- ---------- - -- --------- -----

其中,myapp 是服务的名称,3 表示服务的副本数,3000:3000 表示将容器的 3000 端口映射到主机的 3000 端口,myapp 表示使用上一步构建的镜像。

查看服务

可以使用下面的命令查看服务状态:

------ ------- --

执行命令后,会输出类似于下面的信息:

--             ----  ----         --------  -----   -----
------------   ----- ----------   ---       -----   ----------------

其中,3/3 表示服务的副本数已经全部启动。

可以使用下面的命令查看服务的详细信息:

------ ------- -- -----

执行命令后,会输出类似于下面的信息:

--             ----      -----   ----    ------- -----  ------- -----           -----  -----
------------   -------   -----   -----   -------        ------- - ------- ---
------------   -------   -----   -----   -------        ------- - ------- ---
------------   -------   -----   -----   -------        ------- - ------- ---

其中,DESIRED STATECURRENT STATE 分别表示服务的期望状态和当前状态。

访问应用程序

最后,可以使用浏览器访问应用程序。如果当前机器的 IP 地址为 192.168.0.100,则可以访问 http://192.168.0.100:3000 查看应用程序。

总结

本文介绍了如何使用 Docker Swarm 搭建一个集群,并展示了如何在其中运行一个 Node.js 应用程序。通过本文的学习,读者可以了解 Docker Swarm 的基本概念和使用方法,并可以尝试在自己的环境中搭建一个 Swarm 集群。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d5a656add4f0e0ffd53c1a