Java Docker Api вызвать команду и получить ответ из одного контейнера в другом
Есть два контейнера id 111111111111 и id 222222222222
Мне нужно посредствам Java выполнить команду из первого контейнера на втором. Я настроил сети прокинул сокет все отрабатывает когда я запускаю как бы через CLI:
docker exec 222222222222 sh -c 'cd /etc/ && ls'
получаю в консоли вывод корректный:
/etc/java # docker exec 222222222222 sh -c 'cd /etc/ && ls'
alpine-release
apk
conf.d
crontabs
ethertypes
fstab
group
group-
hostname
hosts
Но мне нужно, чтобы это делалось по средствам Java. Я подключил зависимость последней версии:
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.3.0</version>
</dependency>
Я корректно сконфигурировал и настроил DockerClient, потому что простые команды у меня отрабатывают например вот эта действительно выдает мне список всех живых контейнеров:
List<Container> containers = dockerClient.listContainersCmd().exec();
Мне нужно чтобы я мог запустить именно команду на другом контейнере, а так же получить вывод этой команды, если таковой имеется. Для иллюстрации приведу код, который успешно компилируется и отрабатывает:
public String execCommand(String containerId, String command) {
log.debug("Running command: " +command+ "in container: "+containerId);
String execId = dockerClient.execCreateCmd(containerId).withCmd(command).withAttachStdout(true).withAttachStderr(true).exec().getId();
final StringBuilder output = new StringBuilder();
dockerClient.execStartCmd(execId).exec(new ResultCallback.Adapter<Frame>() {
@Override
public void onNext(Frame object) {
output.append(new String(object.getPayload(), UTF_8));
super.onNext(object);
}
});
log.debug("Result of command: " +command+ " in container: "+containerId+" OUTPUT: "+output);
return output.toString();
}
однако, при всех попытках переменная output постоянно пустая я не понимаю почему. я передаю точно такую же команду "cd /etc/ && ls" хотя я пытался не только с ней. что делать и как быть? какая лучшая практика для того, чтобы выполнить команду по средствам java docker api и получить результат в переменную string?
только не надо тут вставлять код от ChatGPT я уже боролся с ним, он тупо генерирует wikipedia причем на depricated методах.