Как получить список существующих идентификаторов контейнеров по Docker-java - PullRequest
2 голосов
/ 17 мая 2019

В Java-коде мне нужно управлять докерскими контейнерами (перезапускать, останавливать, запускать ...) с помощью библиотеки 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.Мне нужно получить идентификаторы для существующих контейнеров, затем получить их IP-адреса и использовать метод restartContainerCmd для его перезапуска.

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Найденное решение. Поставьте его здесь, если у кого-то есть такой же вопрос:

Создайте простой DockerClient, затем создайте объект ListContainersCmd и используйте метод exec (), затем переберите список контейнеров и найдите ассоциированные контейнеры с IP, а затем получите идентификатор контейнера; с помощью идентификатора мы можем перезапустить контейнер:

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();
        }
    }
0 голосов
/ 17 мая 2019

Возможно, вы ищете такой полезный метод:

    void restartContainers(DockerClient dockerClient) {
        dockerClient.listContainersCmd().exec().stream()
            .map(Container::getId)
            .map(dockerClient::restartContainerCmd)
            .forEach(RestartContainerCmd::exec);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...