5

nomad docker 图像将从 Docker Hub 获取。但我想使用一些本地图像。如何使用主题。(我不想使用私人仓库)

示例我想使用本地图像test


> docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
test                        latest              da795ca8a32f        36 minutes ago      567MB
job "test" {
  datacenters = ["dc1"]

  group "example" {
    task "test" {
      driver = "docker"

      config {
        image = "test"
      }

      resources {
        cpu = 500
        memory = 256 
      }
    }
  }
}

这是错的 !

4

4 回答 4

4

我不确定这是否可以被视为答案或“黑客”。

但是,如果您希望 Nomad 使用节点上已经存在的 docker 映像,则不得将映像标记为最新。

为了测试,我将图像标记为IMAGE:local. 这样 Nomad 如果存在就使用它,如果不存在则从远程拉取它。

于 2020-12-31T10:07:47.723 回答
3

Nomad 现在支持tar docker 镜像。

这是一个例子

artifact {
  source = "http://path.to/redis.tar"
}
config {
  load = "redis.tar"
  image = "redis"
}

但是,焦油大小可能太大而无法弹性传输和供应。

于 2019-11-08T17:34:35.990 回答
2

在这里这里查看Nomad 的源代码,似乎不支持使用机器本地图像。这是有道理的,因为在具有多个节点的集群环境中,调度程序需要能够获取映像,而不管作业分配到哪台机器。

(一种可能的解决方法是在 Nomad 集群中运行注册表服务,并使用对您最方便的存储后端)

于 2019-05-28T14:14:36.203 回答
0

虽然@Miao1007 的回答有效,但您需要注意一件事。看来您不能使用标签latest或完全省略标签(请参阅此处的讨论)。你需要用一些版本号来标记你的 docker build

sudo docker build --tag dokr:1.0.0 .
sudo docker save dokr:1.0.0 > dokr-1.0.0.tar

then use the following in the job file
artifact {
    source = "http://localhost:8000/dokr-1.0.0.tar"
}
config {
    load = "go-docker-dokr-1.0.0.tar"
    image = "go-docker-dokr:1.0.0"
}
于 2022-02-09T16:01:01.333 回答