Как смонтировать том внутри дочернего докера, созданного родительским докером, разделяющим docker.sock - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь создать контейнер-обертку для сборки и запуска набора контейнеров с использованием docker-compose, который я не могу изменить. Docker-compose монтирует несколько томов, но при запуске docker-compose изнутри докера оболочки, тома все еще монтируются с хоста, так как docker .sock монтируется как docker.sock хоста.

Я бы не хотел использовать полный docker-in-docker из-за всех проблем, связанных с ним, описанных в статье jpetazzo .

Я также хотел бы избежать volume-from, поскольку я не могу редактировать упомянутый ранее файл docker-compose.

Есть ли способ заставить этот фрагмент правильно использовать файл родительского докера вместо того, чтобы идти к файловой системе хоста и монтировать его оттуда?

FROM docker:latest

RUN mkdir -p /tmp/parent/ && echo "This is from the parent docker" > /tmp/parent/parent.txt
CMD docker run -v /tmp/parent/parent.txt:/root/parent.txt --rm ubuntu:18.04 bash -c "cat /root/parent.txt"

при запуске с командой, подобной этой:

docker build -t parent . && docker run --rm -v /var/run/docker.sock:/var/run/docker.sock parent

1 Ответ

0 голосов
/ 12 января 2019

Сделайте ваши пути одинаковыми на хосте и внутри образа докера, например,

docker run -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/user:/home/user -w /home/user/project parent_image ...

При монтировании тома в качестве / home / user в том же месте внутри образа, команда типа docker-compose up с относительным монтированием привязки будет использовать имена путей контейнера при обращении к сокету докера, которые будут совпадать с путями на хозяйничать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...