Как кочевник может работать с локальными образами докеров

образ 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 
      }
    }
  }
}

Это не правильно !

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
5
0
2 394
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Глядя на исходный код 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"
}

Другие вопросы по теме