如何通过 Nomad 作业文件将文件复制到 Docker 容器

Ale*_*tes 3 docker nomad

是否可以?

这是我的游牧工作文件

job "test-job" {
  ...
  group "test-group" {
    driver = "docker"
    config {
      image = "<image-name>"
    }
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道可以通过 Dockerfile 的 docker build 将文件复制到 Docker 映像。但我想避免从“image-name”映像显式创建新的 Docker 映像。

我也知道可以将文件复制到从 Docker 映像派生的正在运行的 Docker 容器中。但自从我使用游牧推出泊坞窗图片和填充的容器,将是方便的我,如果保荐人可以复制(通过即时新的泊坞窗层文件拷贝的创建)。

所以我想知道这是否以及如何可能?

小智 5

我不确定我是否理解这个问题......

如果您尝试将 docker 映像放到 nomad 代理上,那么 nomad 可以运行它.. Nomad 会为您执行此操作。

如果您在部署期间构建后尝试将文件添加到 docker 映像中...,Nomad 有几个选项......有点。

您可以使用卷(https://www.nomadproject.io/docs/drivers/docker.html#volumes)并安装一个包含文件的目录。

或者,您可以使用工件(https://www.nomadproject.io/docs/job-specification/artifact.html)并将其放在 /local (Nomad 为您创建此文件夹)中,我认为它已暴露给 docker 容器默认情况下。

或者,另一种方式,就是在启动时让 Docker 容器去获取你需要的文件。很多人为此使用 consul-template,它现在内置于 Nomad ( https://www.nomadproject.io/docs/job-specification/template.html )。

这些方法实际上都没有创建一个新的 docker 镜像层,但是在部署时无法做到这一点,而应该在构建时完成。