Как проверить, присутствует ли изображение локально - PullRequest
0 голосов
/ 09 июля 2019

Я использую библиотеку docker-java Maven, и я хотел бы знать, есть ли способ проверить, было ли уже извлечено изображение или присутствует локально, прежде чем извлекать его при необходимости, с помощьютолько имя изображения.В настоящее время я должен извлекать изображение каждый раз, когда выполняю его, чтобы убедиться, что оно присутствует локально, что нехорошо.

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Если вам нужно сделать это в Java, вы можете использовать метод inspectImageCmd интерфейса com.github.dockerjava.api.DockerClient. Затем проверьте возвращенный InspectImageResponse объект ответа. Примерно так:

String imageId = ...;
InspectImageResponse response = dockerClient.inspectImageCmd(imageid).exec();

docker-java - это просто оболочка для Docker REST API, а команда inspect является эквивалентом GET http-запроса к /images/{imageid}/json. См. Раздел 3.2 Изображения в API Docker Engine .

0 голосов
/ 09 июля 2019

docker inspect выведет информацию об изображении, если оно существует, и вернет правильный ответ, если его нет.

docker image inspect image:latest
  • Если изображение не существует:

    Ошибка: Нет такого изображения: image:latest

  • Если это так, будет выводиться информация об изображении:

      [
       {  
         "Id":"fe01a428b9d9de35d29531e9994157978e8c48fa693e1bf1d221dffbbb67b170",      
         "Parent": "10acc31def5d6f249b548effbaccfd61af0240c17315a7ad393d022c5ca2", 
          ....
       }
     ]
    

Из этих ответов есть несколько хороших скриптовых кодов; Вы можете поместить его в .sh и использовать в качестве инструмента:

docker image inspect ${image_id}:${image_tag}>/dev/null 2>&1 && 
echo exists! || echo doesn't exist!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...