首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Docker-java获取已有容器ids列表

如何通过Docker-java获取已有容器ids列表
EN

Stack Overflow用户
提问于 2019-05-17 05:44:25
回答 2查看 1.1K关注 0票数 3

在Java代码中,我需要管理docker容器(重新启动、停止、启动...)使用Docker-java库。https://github.com/docker-java/docker-java

在Docker-Java示例中,我找到了创建和获取容器的方法:https://github.com/docker-java/docker-java/wiki

代码语言:javascript
复制
     DockerClient dockerClient = DockerClientBuilder.getInstance().build();
     CreateContainerResponse container = dockerClient.createContainerCmd("nginx")
            .exec();
     System.out.println(container.getId());
     dockerClient.restartContainerCmd(container.getId());

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

代码语言:javascript
复制
      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方法重新启动它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-18 05:59:03

找到解决方案了。把它放在这里,以防有人有同样的问题:

构建一个简单的容器,然后创建ListContainersCmd对象并使用exec()方法,然后遍历容器列表,找到与IP关联的容器,然后获得容器Id;有了Id,我们可以重启容器:

代码语言:javascript
复制
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();
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2019-05-17 07:53:49

您可能正在寻找如下的实用方法:

代码语言:javascript
复制
    void restartContainers(DockerClient dockerClient) {
        dockerClient.listContainersCmd().exec().stream()
            .map(Container::getId)
            .map(dockerClient::restartContainerCmd)
            .forEach(RestartContainerCmd::exec);
    }

Complete code on GitHub

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56176992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档