如何通过Docker java获取现有容器ID列表
在Java代码中,我需要使用docker Java库管理docker容器(重启、停止、启动…)。 在Docker Java示例中,我找到了创建和获取容器的方法: 在命令行中,我们可以使用:如何通过Docker java获取现有容器ID列表,java,docker,docker-java,Java,Docker,Docker Java,在Java代码中,我需要使用docker Java库管理docker容器(重启、停止、启动…)。 在Docker Java示例中,我找到了创建和获取容器的方法: 在命令行中,我们可以使用: docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4dd858fe9022 nginx "nginx -g 'daemon of…" 42 hours ago Up 42 hours 0.0.0.0:80->80/tcp webserver
但是我需要用JAVA代码来实现。我需要获取现有容器的ID,然后获取它们的Ip地址,并使用restartContainerCmd方法重新启动它。您可能正在寻找这样一种实用方法:
void restartContainers(DockerClient dockerClient) {
dockerClient.listContainersCmd().exec().stream()
.map(Container::getId)
.map(dockerClient::restartContainerCmd)
.forEach(RestartContainerCmd::exec);
}
找到了解决方案。如果有人有相同的问题,请将其放在此处: 构建一个简单的DockerClient,然后创建ListContainerCmd对象并使用exec()方法,然后遍历容器列表,找到与IP关联的容器,然后获取容器Id;使用Id,我们可以重新启动容器:
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
ListContainersCmd listContainersCmd = dockerClient.listContainersCmd().withShowAll(true);
for (Container container: listContainersCmd.exec()) {
if (container.toString().contains("192.168.1.105")){
dockerClient.restartContainerCmd(container.getId()).exec();
}
}
我想你要找的是这个,它有列出容器所需的所有方法。
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
ListContainersCmd listContainersCmd = dockerClient.listContainersCmd().withShowAll(true);
for (Container container: listContainersCmd.exec()) {
if (container.toString().contains("192.168.1.105")){
dockerClient.restartContainerCmd(container.getId()).exec();
}
}