Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Docker java获取现有容器ID列表_Java_Docker_Docker Java - Fatal编程技术网

如何通过Docker java获取现有容器ID列表

如何通过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

在Java代码中,我需要使用docker Java库管理docker容器(重启、停止、启动…)。

在Docker Java示例中,我找到了创建和获取容器的方法:

在命令行中,我们可以使用:

      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();
        }
    }