如何使用docker-java获取容器的主机名?

问题描述

我可以像这样创建,启动和检索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中检索主机名吗?

解决方法

dockerClient.inspectContainerCmd(container.getId()).exec().getConfig().getHostName();

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...