#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) и поэтому продвигаюсь медленно. Мне удалось внести некоторые изменения (они компилируются, но я пока не знаю, работают они или нет). Но я уже несколько дней ищу (включаю и выключаю), чтобы найти какой-нибудь метод, который возвращает входной поток . Но, похоже, его там нет. Также, по-видимому, очень мало документации. Я не понимаю, как бы я смог это решить, даже если бы был программистом.