java - 如何通过 Docker-java 获取现有容器 ID 的列表
问题描述
在 Java 代码中,我需要使用 Docker-java 库管理 docker 容器(重新启动、停止、启动 ...)。 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 代码来完成。我需要获取现有容器的 ID,然后获取它们的 IP 地址并使用 restartContainerCmd 方法重新启动它。
解决方案
找到解决方案。把它放在这里以防有人有同样的问题:
构建一个简单的 DockerClient 然后创建 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();
}
}
推荐阅读
- java - 在单独的控制台/cmd 窗口中显示使用 JSch 执行的 SSH 命令的结果,而不是在 IDE 控制台中
- python - Python:如何获取列表中的对象,然后返回该对象的值(这是一个变量)?
- python - 在 Python 中按顺序运行 Powershell 命令
- javascript - 在 Excel VBA 中保存网页中 javascript 函数的结果
- sql - 想生成自定义唯一键并同时处理多个请求
- angularjs - 动态启用/禁用滑动器(触摸/鼠标)
- ios - WKWebview 超时
- android-studio - 如何在 Android Studio 中恢复 XML 代码样式设置
- pycharm - 无法接受 PyCharm 的条款和条件
- git - 如何使用 FULL COMMITS 将 git repo 迁移到 svn?