Я прошу помощи в создании локальных образов Docker с использованием jib-core.
Я знаю, как отправить образ в репозиторий DockerHub, но теперь я хочу поместить все образы в один локальный репозиторий.
Что я сделал до сих пор:
на данный момент я делаю так:
public void buildLocalImage(String appName) throws InvalidImageReferenceException, IOException, InterruptedException, ExecutionException, RegistryException, CacheDirectoryCreationException {
Jib.from("openjdk:15")
.addLayer(Arrays.asList(Paths.get("jars/"+appName+".jar")), AbsoluteUnixPath.get("/"))
.addLayer(Arrays.asList(Paths.get("jars/local-kube-api.jar")), AbsoluteUnixPath.get("/"))
.addLayer(Arrays.asList(Paths.get("jars/script.sh")), AbsoluteUnixPath.get("/"))
.setEntrypoint("sh","/script.sh")
.containerize(
Containerizer.to(DockerDaemonImage.named("images/"+appName+"-images:TEST")).setOfflineMode(true)
);
}
Конечная цель состоит в том, чтобы запустить 2 jar-файла в одном контейнере, которые успешно работают, когда я использую традиционный способ, заключающийся в отправке в репозиторий dockerHub путем добавления учетных данных и т. д.
Приведенный выше код выполняется без ошибок, но я не могу найти изображение после него, и я не знаю, почему.
Должно быть, я где-то ошибся. Это университетский проект, и если у вас есть какой-либо документ, который я могу прочитать по этим темам, это будет для меня большим подспорьем.
public void buildLocalImage(String appName) throws InvalidImageReferenceException, IOException, InterruptedException, ExecutionException, RegistryException, CacheDirectoryCreationException {
Jib.from("openjdk:15")
.addLayer(Arrays.asList(Paths.get("jars/"+appName+".jar")), AbsoluteUnixPath.get("/"))
.addLayer(Arrays.asList(Paths.get("jars/local-kube-api.jar")), AbsoluteUnixPath.get("/"))
.addLayer(Arrays.asList(Paths.get("jars/script.sh")), AbsoluteUnixPath.get("/"))
.setEntrypoint("sh","/script.sh")
.containerize(
Containerizer.to(TarImage.at(Paths.get("images/"+appName+"-image:latest.tar"))
.named(appName+"-image:latest")));
}
Создав образ .tar, а затем загрузив его в докер через docker load < image_name
, вы можете хранить и запускать несколько локальных образов докера в контейнерах.
Если вашей конечной целью является загрузка локального демона Docker, вы можете использовать DockerDaemonImage
вместо TarImage
.
Будет полезно описать, какой результат вы хотите получить. Чего вы ожидаете?