образ 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
}
}
}
}
Это не правильно !
Глядя на исходный код Nomad здесь и здесь, кажется, что использование локальных образов компьютера не поддерживается. Это имело бы смысл, так как в кластерной среде с несколькими узлами планировщик должен иметь возможность получать образ независимо от того, на какой машине выделено задание.
(Одним из возможных обходных путей может быть запуск службы реестра в кластере Nomad, и использование независимо от того, какой сервер хранения наиболее удобно для вас)
Nomad теперь поддерживает tar-образы докеров.
вот пример
artifact {
source = "http://path.to/redis.tar"
}
config {
load = "redis.tar"
image = "redis"
}
Однако размер tar может быть слишком большим для гибкой транспортировки и подготовки.
Я не уверен, можно ли это рассматривать как ответ или «взлом».
Но если вы хотите, чтобы Nomad использовал образ докера, который уже присутствует на узле, образ НЕ ДОЛЖЕН быть помечен как последний.
Для тестирования я помечаю свои изображения как IMAGE:local
. Таким образом, Nomad использует его, если он есть, и извлекает его с удаленного компьютера, если нет.
Хотя @Miao1007 отвечать работает, вы должны знать одну вещь. Похоже, вы не можете использовать тег самый последний или вообще не использовать тег (см. обсуждение здесь). Вам нужно пометить свою сборку докера некоторым номером версии, например
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"
}