Terraform不在工作节点上创建docker服务

Terraform不在工作节点上创建docker服务,docker,terraform,docker-swarm,Docker,Terraform,Docker Swarm,我们需要在数量有限的主机上设置多个jenkins实例 为了实现这一点,我在两台服务器上安装了Docker Swarm 在“主”节点上,我使用terraform创建和管理docker服务 当我手动创建服务时,容器会自动在工作节点上生成。当我创建一个包含2个副本的服务时,容器会在两个节点上按原样创建 但是,当我使用terraform代码创建和管理服务时,容器永远不会在工作节点上创建。即使我设置了两个复制副本,它们都是在主节点上创建的 此处提供了用于创建服务的main.tf文件 resource "d

我们需要在数量有限的主机上设置多个jenkins实例

为了实现这一点,我在两台服务器上安装了Docker Swarm

在“主”节点上,我使用terraform创建和管理docker服务

当我手动创建服务时,容器会自动在工作节点上生成。当我创建一个包含2个副本的服务时,容器会在两个节点上按原样创建

但是,当我使用terraform代码创建和管理服务时,容器永远不会在工作节点上创建。即使我设置了两个复制副本,它们都是在主节点上创建的

此处提供了用于创建服务的main.tf文件

resource "docker_service" "jenkins_service" {
  name = var.project_name
  task_spec {
    container_spec {
      image = docker_image.jenkins_image.name
      mounts {
        target = "/var/jenkins_name"
        source = docker_volume.jenkins_volume.name
        type   = "volume"
      }
      mounts {
        source = "/var/run/docker.sock"
        target = "/var/run/docker.sock"
        type   = "bind"
      }
    }
    networks = ["${docker_network.jenkins_network.name}"]
  }

  endpoint_spec {
    ports {
      target_port    = "8080"
      published_port = var.web_interface_port
      publish_mode   = "ingress"
      name           = "WEB_INTERFACE"
    }
    ports {
      target_port    = "50000"
      published_port = var.api_interface_port
      publish_mode   = "ingress"
      name           = "API_INTERFACE"
    }
  }
}
我不知道我做错了什么。任何帮助都将不胜感激

问候。

为了他人的利益: 我使用的是定制的docker图像,terraform代码实质上是使用该格式调用这些图像:从而迫使swarm仅在实际拥有图像的主节点上启动容器

我遇到了一篇极好的文章,它指出了确切的问题。我的安装程序缺少docker注册表。我遵循了链接中的步骤,解决了问题

感谢“fernandezcuesta”花时间回答我的问题

问候 Senthil Nathan M

为了他人的利益: 我使用的是定制的docker图像,terraform代码实质上是使用该格式调用这些图像:从而迫使swarm仅在实际拥有图像的主节点上启动容器

我遇到了一篇极好的文章,它指出了确切的问题。我的安装程序缺少docker注册表。我遵循了链接中的步骤,解决了问题

感谢“fernandezcuesta”花时间回答我的问题

问候
Senthil Nathan M

我可能在胡说八道,但可能由于绑定挂载,它正在主节点中创建容器。我的意思是,如果工作节点中不存在该路径,则无法在该节点上生成容器。@fernandezcuesta感谢您的响应。问题是由于我使用的自定义图像。在设置docker注册表后,我能够在节点之间生成容器。我可能在胡说八道,但由于绑定装载,它可能正在主节点中创建容器。我的意思是,如果工作节点中不存在该路径,则无法在该节点上生成容器。@fernandezcuesta感谢您的响应。问题是由于我使用的自定义图像。在设置docker注册表之后,我能够跨节点生成容器。