Access Docker daemon Удаленный API на Docker для Mac

Я работаю в Docker для OSX, и у меня возникают проблемы с работой удаленного API Docker.

Моя ситуация такова:

  • Docker-демон, работающий изначально в OSX ( https://www.docker.com/products/docker, поэтому не вариант boot2docker)
  • Дженкинс работает как докер

Нет, я хочу использовать плагин Jenkins docker-build-step для создания образа Docker, но я хочу, чтобы он использовал демон Docker на хост-машине, поэтому в настройках Jenkins DOCKER_URL должен выглядеть примерно так:2375. (Причина этого заключается в том, что я не хочу устанавливать docker на контейнер jenkins, если он уже установлен на моем хост-компьютере).

Есть ли способ сделать это или de Docker для Mac в настоящее время не поддерживает это? Я пробовал возиться с опциями экспорта DOCKER_OPTS или DOCKER_HOST, но все равно получал отказ в соединении при вызове http://localhost:2375/images/json, например.

По сути, вопрос больше в том, чтобы включить удаленный API Docker для OSX с использованием прецедента, вызывающего его из контейнера док-станции Jenkins.

3 ответа

Вы могли бы рассмотреть возможность использования socat. Это решило мою проблему, которая кажется похожей.

socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock &

Это позволяет вам получить доступ к вашему интерфейсу Docker MacOS из контейнера Docker, используя: tcp://[host IP address]:2375

На macOS socat может быть установлен так:

brew install socat

Смотрите здесь для длительного обсуждения на эту тему: Плагин: Docker не может подключиться через unix:// на Mac OS X

У меня была такая же проблема, но с mysql. Мне нужно было открыть порт моих хостов докеров на порту 43306 для образа докера mysql, работающего на порту 3306.

Решение:

Создайте свой образ докера с параметром -p.

Пример:

      #> docker run -p 0.0.0.0:43306:3306 --name mysql-5.7.23xx -e MYSQL_ROOT_PASSWORD=myrootdba -d mysql/mysql-server:5.7.23 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Теперь я могу подключиться с моего хост-сервера докеров через порт 43306 к образу докера mysql.

Если вы уже добавили открытый ключ SSH на свой удаленный сервер, вы также можете использовать эти учетные данные ssh для подключения к докеру. Для этого подхода вам не нужно настраивать удаленный API на сервере.

При подключении к macOS Docker Desktop вы можете использовать ssh (после того, как вы включили его на Mac)

      docker -H ssh:user@192.168.64.1 images

или же

      export DOCKER_HOST=ssh:user@192.168.64.1
docker images
Другие вопросы по тегам