次のように、docker コンテナーのインスタンスを作成、開始、および取得できます。
CreateContainerResponse response = dockerClient.createContainerCmd(imageId).exec();
String containerId = response.getId();
dockerClient.startContainerCmd(containerId).exec()
Container container = dockerClient.listContainersCmd()
.withIdFilter(Collections.singletonList(containerId))
.exec()
.get(0);
ただし、Container
オブジェクトはホスト名を公開していないようです。
次のように、実行中のコンテナーを検査することもできます。
InspectContainerResponse response = dockerClient.inspectContainerCmd(container.getId()).exec()
繰り返しますが、応答にはホスト名が含まれていません。ホスト名が保存されているファイルを参照する hostnamePath が含まれていますが、これには、アプリにはない読み取り権限が必要です。
コンテナー ID を部分文字列にすることもできますが、これはかなり脆弱なようです。また、必要がなければ、外部 docker プロセスへのシェルアウトも避けたいと思います。
ホスト名を docker-java から直接取得する方法はありますか?