Skip to content

Docker Swarm

注意

这是一个实验性功能。

在 Coolify 中设置

如果您想使用 Swarm 部署资源,您需要将 Swarm 管理器 添加到 Coolify。

可选地,您可以将 Swarm 工作节点 添加到 Coolify。这将允许 Coolify 在 Swarm 工作节点 上执行清理和其他操作。

Docker 镜像仓库

使用 Swarm 时,您需要有一个外部 Docker 镜像仓库,因为所有工作节点都需要能够拉取您通过 Coolify 构建的镜像。

  • Swarm 管理器需要将镜像推送到 Docker 镜像仓库。
  • Swarm 工作节点需要从 Docker 镜像仓库拉取镜像。

因此,请相应地设置您的 Docker 登录凭证。更多信息此处

安装 Swarm 集群

正在进行中 这只是安装简单 Docker Swarm 集群的简要指南。如需更多信息,请参考官方文档

前提条件

  • 本指南将使用 Hetzner(推荐链接)。您也可以使用其他提供商。
  • 创建 Docker Swarm 集群至少需要 3 台具有相同架构(ARM 或 AMD64)的服务器。
  • 1 台服务器作为管理节点。
  • 2 台服务器作为工作节点(您可以根据需要添加更多工作节点)。
  • 如有可能,为所有服务器添加私有网络。

安装 Docker

在所有服务器上安装 Docker。您可以按照官方文档操作,或者:

  1. 使用 Rancher 脚本安装
bash
curl https://releases.rancher.com/install-docker/24.0.sh | sh
  1. 使用 Docker 脚本安装
bash
curl https://get.docker.com | sh -s -- --version 24.0

您只需使用上述命令中的一个即可。

配置 Docker

所有服务器上,运行以下命令启动 Docker。

bash
systemctl start docker
systemctl enable docker

注意

Hetzner 特定配置。Hetzner 服务器使用 MTU 为 1450。您需要配置 Docker 使用相同的 MTU。

管理节点上,运行以下命令配置 Docker。

bash
mkdir -p /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
  "default-network-opts": {
    "overlay": {
      "com.docker.network.driver.mtu": "1450"
    }
  }
}
EOF
systemctl restart docker

创建 Swarm 集群

在管理节点上,运行以下命令创建新集群。

bash
# MANAGER_IP = 管理节点的 IP。如果您有私有网络,请使用私有 IP,如 10.0.0.x。
docker swarm init --advertise-addr <MANAGER_IP>

此命令将输出一个在工作节点上加入集群的命令。

它应该类似于以下内容:

bash
# 不要运行此命令,这只是一个示例!
docker swarm join --token SWMTKN-1-24zvxeydjarchy7z68mdawichvf684qvf8zalx3rmwfgi6pzm3-4ftqn9n8v98kx3phfqjimtkzx 10.0.0.2:2377

验证集群

在管理节点上运行以下命令验证集群。

bash
docker node ls

您应该会看到类似以下内容:

bash
ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
ua38ijktbid70em257ymxufif *   swarm-manager   Ready     Active         Leader           24.0.2
7rss9rvaqpe9fddt5ol1xucmu     swarm-worker    Ready     Active                          24.0.2
12239rvaqp43gddtgfsdxucm2     swarm-worker    Ready     Active                          24.0.2

使用持久存储部署

要能够使用持久存储部署服务,您需要在swarm-worker上有共享卷。这样 Swarm 服务就可以在swarm-worker之间移动资源。

您始终可以使用 AWS EFS、NFS、GlusterFS 等服务。

正在进行中