在Java代码中,我需要管理docker容器(重新启动、停止、启动...)使用Docker-java库。https://github.com/docker-java/docker-java
在Docker-Java示例中,我找到了创建和获取容器的方法:https://github.com/docker-java/docker-java/wiki
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
CreateContainerResponse container = dockerClient.createContainerCmd("nginx")
.exec();
System.out.println(container.getId());
dockerClient.restartContainerCmd(container.getId());在命令行中,我们可以使用:
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代码来完成。我需要获取现有容器的it,然后获取它们的Ip地址,并使用restartContainerCmd方法重新启动它。
发布于 2019-05-18 05:59:03
找到解决方案了。把它放在这里,以防有人有同样的问题:
构建一个简单的容器,然后创建ListContainersCmd对象并使用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();
}
}发布于 2019-05-17 07:53:49
您可能正在寻找如下的实用方法:
void restartContainers(DockerClient dockerClient) {
dockerClient.listContainersCmd().exec().stream()
.map(Container::getId)
.map(dockerClient::restartContainerCmd)
.forEach(RestartContainerCmd::exec);
}https://stackoverflow.com/questions/56176992
复制相似问题