Docker (Spotify) API - не удается подключиться к Docker - PullRequest
2 голосов
/ 28 апреля 2019

В моем приложении Docker (Spring Boot) я хотел бы выполнять команды Docker. Я использую docker-spotify-api (клиент).

Я получаю разные ошибки подключения. Я запускаю приложение как часть docker-compose.yml.

Это то, что я до сих пор пробовал на VPS EC2 AWS:

docker = DefaultDockerClient.builder()
  .uri(URI.create("tcp://localhost:2376"))
  .build();
=> TCP protocol not supported. 

docker = DefaultDockerClient.builder()
  .uri(URI.create("tcp://localhost:2375"))
  .build();
=> TCP protocol not supported. 

docker = new DefaultDockerClient("unix:///var/run/docker.sock");
==> No such file

docker = DefaultDockerClient.builder()
          .uri("unix:///var/run/docker.sock")
          .build();
==> No such file

docker = DefaultDockerClient.builder()
            .uri(URI.create("http://localhost:2375")).build();
or
docker = DefaultDockerClient.builder()
            .uri(URI.create("http://localhost:2376")).build();
or 
docker = DefaultDockerClient.builder()
              .uri(URI.create("https://localhost:2376"))
              .build();
==> Connect to localhost:2376 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

В моем окружении на EC2 VPS:

$ ls -l /var/run
lrwxrwxrwx 1 root root 6 Nov 14 07:23 /var/run -> ../run

$ groups ec2-user                              
ec2-user : ec2-user adm wheel systemd-journal docker   

$ ls -l /run/docker.sock                       
srw-rw---- 1 root docker 0 Feb 14 17:16 /run/docker.sock

echo $DOCKER_HOST $DOCKER_CERT_PATH
(empty)

Ответы [ 3 ]

2 голосов
/ 02 мая 2019

Как указывал @ Benjah1, /var/run/docker.sock должен быть смонтирован первым.

Чтобы сделать это в среде docker-compose / Docker Swarm, вы можете сделать:

volumes:
  - /var/run/docker.sock:/var/run/docker.sock

Кроме того, другие опции привели к ошибкам, поскольку по умолчанию Docker настроен так, что он выиграл 't открыть для TCP / HTTP соединений.Вы можете изменить это, конечно, принимая небольшой риск.

2 голосов
/ 01 мая 2019

Эта ситуация похожа на https://github.com/spotify/docker-client/issues/838#issuecomment-318261710.

Вы используете docker-compose на хосте для запуска вашего приложения;Внутри контейнера приложение Spring Boot использует docker-spotify-api.

Что вы можете попробовать, так это смонтировать /var/run/docker.sock:/var/run/docker.sock в вашем файле компоновки..

0 голосов
/ 01 мая 2019

Каковы ваши значения переменных DOCKER_HOST и DOCKER_CERT_PATH.

Попробуйте ниже, поскольку docker-клиент связывается с вашим локальным демоном Docker с помощью HTTP Remote API

    final DockerClient docker = DefaultDockerClient.builder()
      .uri(URI.create("https://localhost:2376"))
      .build();

пожалуйста, проверьте также привилегии docker.sock, видимы ли они для вашего приложения, и проверьте, работает ли ваша докерская служба или нет, как показано на скриншоте выше. Ваш docker.sock выглядит пустым, но если служба запущена, она должна содержать pid

...