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