Ответ 1
Сервер докеров
Основные компоненты Docker описаны здесь: https://docs.docker.com/introduction/understanding-docker/#what-are-the-major-docker-components
То, что описывается как "сервер докеров", это "демон Docker" в связанном описании. Демон Docker запускается на вашем локальном компьютере и обычно является основной точкой контакта для команд, которые запускаются двоичным кодом docker
.
Демоны Docker выполняют ряд задач, включая:
- стартовые контейнеры
- остановки контейнеров
- запрос состояния контейнера
- создание изображений ( "файловая система" для контейнера)
- нажатие изображений на индекс Docker или на другой сервер изображений (чтобы сделать изображение видимым снаружи вашей машины сборки)
- управление контейнерами, перезапуск их, если они останавливаются
sbt-native-packager сопоставление задач с действиями Docker
publishLocal
SBT использует задачу с именем publishLocal
для публикации активов в локальных репозиториях Ivy/Maven (это то, что существует только на вашем компьютере).
Поддержка Docker в sbt-native-packager пытается использовать ту же задачу в контексте Docker, так что sbt docker:publishLocal
создает изображение на вашем локальном сервере Docker. Подобно публикации в Ivy или Maven локально, это действие позволяет изображению быть видимым локально для разработки, но не делает его видимым вне вашей локальной машины.
На практике он отображает команду docker build -t "${projectName}:${version}"
Затем вы можете использовать это изображение с docker run "${projectName}:${version}"
, но только на своей локальной машине.
<публикующие/h2 >
SBT использует задачу с именем publish
для публикации активов в удаленных хранилищах Ivy/Maven. Для этого требуется дополнительная настройка, чтобы описать, где можно опубликовать изображение.
sbt-native-packager также пытается сопоставить эту задачу с соответствующим действием в контексте Docker. Таким образом, плагин создает сборку изображения локально, а затем нажимает изображение на соответствующий репозиторий удаленных изображений.
Для этого вам нужно добавить параметр dockerRepository
.
Если этот параметр установлен в строку без косой черты, например. "username1", это добавит "имя пользователя1/" к имени изображения. Когда попытка нажать изображение, Docker попытается нажать изображение в общедоступный реестр Docker на https://registry.hub.docker.com/ в учетной записи "username1".
Если он установлен в строку со слэшами, например. "my.server1/username1", это также добавит эту строку в имя изображения. Это похоже на предыдущий случай, за исключением того, что сервер Docker попытается найти сервер под названием "my.server1" в DNS и нажать на него вместо общедоступного реестра Docker.
На практике он отображает
docker build -t "${dockerRepository}/${projectName}:${version}" . // working directory at target/docker
docker push "${dockerRepository}/${projectName}:${version}"
Затем вы можете использовать это изображение с вашего локального компьютера или других машин с помощью docker run "${dockerRepository}/${projectName}:${version}"
.
этап
Задача stage
создает каталог, который содержит все файлы для изображения Docker, в формате, готовом для отправки вашему демону Docker. Этот каталог target/docker
. Если вы меняете рабочий каталог и запускаете docker build .
, вы должны создать изображение, используя содержимое этого каталога.