如何使用docker java获取正在运行的容器的容器Id?

如何使用docker java获取正在运行的容器的容器Id?,docker,docker-java,Docker,Docker Java,我正在运行一个带有名称标签的容器,该标签允许我识别它。在docker java中,大多数操作都需要容器id,我不知道如何使用docker-java获取该id。有人能帮助我如何获取正在运行的容器的容器id吗 例如: docker ps 我正在寻找一种方法,通过它我可以得到集装箱使用集装箱名称 注意:我知道下面的方法创建一个新容器并选择id。 dockerClient.createContainerCmd(imageName).exec().getId()您可以使用withXXX方法按状态和其他属性

我正在运行一个带有名称标签的容器,该标签允许我识别它。在docker java中,大多数操作都需要容器id,我不知道如何使用docker-java获取该id。有人能帮助我如何获取正在运行的容器的容器id吗

例如:

docker ps

我正在寻找一种方法,通过它我可以得到集装箱使用集装箱名称

注意:我知道下面的方法创建一个新容器并选择id。
dockerClient.createContainerCmd(imageName).exec().getId()

您可以使用withXXX方法按状态和其他属性筛选容器,但docker java API中没有WithNameFilter方法。解决方法是使用通用过滤器:

//get the docker client
DockerClient docker = DockerClientBuilder.getInstance(config).build();
//prepare command to retrieve the list of (running) containers 
ListContainersCmd listContainersCmd = client.listContainersCmd().withStatusFilter("running");
//and set the generic filter regarding name
listContainersCmd.getFilters().put("name", Arrays.asList("redis"));
//finally, run the command
List<Container> exec = listContainersCmd.exec();
//获取docker客户端
DockerClientDocker=DockerClientBuilder.getInstance(config.build();
//准备命令以检索(正在运行的)容器列表
ListContainerCmd ListContainerCmd=client.ListContainerCmd().withStatusFilter(“正在运行”);
//并设置有关名称的通用筛选器
listContainerCmd.getFilters().put(“name”,Arrays.asList(“redis”);
//最后,运行命令
List exec=listContainersCmd.exec();

就这样

如果您使用的是本地Docker守护程序,您可以使用刚刚发布的版本0.0.1

要迭代所有正在运行的容器,只需执行以下操作:

final Containers containers = new LocalDocker(
    new File("/var/run/docker.sock")
).containers();
for(final Container running : containers) {
    System.out.println(running.containerId());
}

研究一下该项目的自述、励志博客和维基,它们都很短:)

自最初发布之日起,docker java api进行了一些更新。要更新@amihaiemill对更新api的原始答案,代码应为

final Docker docker = new UnixDocker( new File( "/var/run/docker.sock" ) );
final Containers containers = docker.containers();

for ( final Container running : containers ) {
    System.out.println( running.containerId() );
}

Thank you amihaiemil for your work on this project
final Docker docker = new UnixDocker( new File( "/var/run/docker.sock" ) );
final Containers containers = docker.containers();

for ( final Container running : containers ) {
    System.out.println( running.containerId() );
}

Thank you amihaiemil for your work on this project