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,它引用了一个存储主机名的文件,但这需要 root 权限才能读取我的应用程序没有的权限。

我可以对容器 id 进行子串化,但这似乎很脆弱。如果我不需要的话,我还想避免使用外部 docker 进程。

有什么方法可以直接从 docker-java 检索主机名?

4

1 回答 1

1
dockerClient.inspectContainerCmd(container.getId()).exec().getConfig().getHostName();
于 2020-11-20T00:19:07.373 回答