2015-12-22 2 views
1

Я пишу docker-compose.yml файл для приложения, которые должны иметь доступ к Docker внутри контейнера (Докер в Докер), согласно сообщению в блоге здесь: https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/Докер-Compose: команда замена Bash

Проблема в том, мне нужно присоединять хозяйничать Docker двоичные файлы, но я не знаю точного пути грузчиком на целевой системе, на некоторых это может быть /bin/docker, на других - /usr/local/bin/docker и т.д.

Я хочу иметь кросс-платформенные решения, просто положить что-то вроде это

volumes: 
    - $(which docker):/bin/docker 

docker-compose.yml.

Возможно ли это с помощью Docker-Compose?

+2

Почему вы не просто включить двоичные файлы Docker в изображении ? –

+0

Оливер, для этого конкретного случая это помогает, но как насчет общего случая? Например. что, если я хочу отображать не докер, а не двоичные файлы, но какую-то папку, которая может отличаться на разных хостах? –

+1

https://docs.docker.com/compose/compose-file/#variable-substitution –

ответ

2

На самом деле это плохая идея, чтобы монтировать двоичный файл Docker, поскольку более новые версии имеют динамические двоичные файлы, поэтому вам также нужно будет обнаружить и смонтировать все необходимые библиотеки.

Вместо этого, как предлагает Оливер, гораздо проще установить Docker непосредственно внутри контейнера и указать его на сокет на хосте. Обратите внимание, что у вас могут быть проблемы, если у вас есть разные версии Docker на хосте и в контейнере.

Чтобы ответить на вопрос, вы можете использовать переменные среды оболочки в новых версиях Compose. В вашей Dockerfile вы можете сделать что-то вроде:

volumes: 
    - ${DOCKER_PATH}:/bin/docker 

И когда вы звоните составляют:

DOCKER_PATH="$(which docker)" && docker-compose up 

Полные документы здесь https://docs.docker.com/compose/compose-file/#variable-substitution

+0

Но вы не ответили на вопрос о замене команды – luckydonald

+0

@luckydonald true. Я добавил ответ. Я не тестировал код, поэтому ему могут потребоваться некоторые исправления. –

Смежные вопросы