0

次のように、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 から直接取得する方法はありますか?

4

1 に答える 1