Доступ к выводу команды, выполняемой в контейнере docker

#java #docker-java

Вопрос:

Я пытаюсь перейти с docker-java 0.10.3 на 3.2.7. Эта строка полностью поставила меня в тупик:

 InputStream response =   dockerClient.attachContainerCmd(container.getId())  .withLogs(true)  .withStdErr(true)  .withStdOut(true)  .withFollowStream(true)  .exec();  

Мне удалось обойти одну ошибку, изменив ее на

 InputStream response =   dockerClient.attachContainerCmd(container.getId())  .withLogs(true)  .withStdErr(true)  .withStdOut(true)  .withFollowStream(true)  .exec(new AttachContainerResultCallback());  

(но моя среда разработки говорит, что AttachContainerResultCallback это устарело.) Проблема в том, что .exec() используется для возврата an InputStream . Теперь он возвращает a void . Мне это нужно InputStream , потому что вывод команд, выполняемых в контейнере, должен найти путь к экрану. Это должно быть в реальном времени, потому что пользователь должен видеть вывод команд по мере их выполнения; Я не могу просто скопировать файл в конце.

Как я могу получить это InputStream ?


Ошибка в том, что:

 java: incompatible types: inference variable T has incompatible bounds  lower bounds: java.io.InputStream,com.github.dockerjava.api.async.ResultCallbacklt;com.github.dockerjava.api.model.Framegt;  lower bounds: com.github.dockerjava.core.command.AttachContainerResultCallback  

Комментарии:

1. Почему бы не 3.2.12? Потому что 3.2.7 была последней, когда я начинал. Я не программист (я инженер HW) и поэтому продвигаюсь медленно. Мне удалось внести некоторые изменения (они компилируются, но я пока не знаю, работают они или нет). Но я уже несколько дней ищу (включаю и выключаю), чтобы найти какой-нибудь метод, который возвращает входной поток . Но, похоже, его там нет. Также, по-видимому, очень мало документации. Я не понимаю, как бы я смог это решить, даже если бы был программистом.