Как я могу получить изображение Docker в Dockerfile? - PullRequest
0 голосов
/ 28 июня 2018

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

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

Но, когда я пытаюсь добавить

RUN docker pull my/image1
RUN docker pull my/image2

для составного файла Docker, который расширяет образ Docker , эти команды не выполняются при сборке, поскольку демон Docker не работает.

То, что я пытаюсь сделать здесь, - это вставить два подизображения в мое составное изображение во время сборки, чтобы минимизировать время запуска составного изображения. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 29 июня 2018

Есть способ сделать это, но, вероятно, это плохая идея.

  1. Используйте docker-machine для создания экземпляра docker-machine.
  2. Используйте docker-machine env, чтобы получить учетные данные для только что созданного экземпляра docker-machine. Это будет пара переменных среды.
  3. Добавьте что-то вроде ARG DOCKER_HOST="tcp://172.16.62.130:2376" для каждого из учетных данных, созданных на предыдущем шаге. Поместите его в свой Dockerfile до первого RUN docker ....
  4. После последнего ARG .., но перед первым RUN docker ... введите ENV DOCKER_HOST=${DOCKER_HOST} для всех учетных переменных.

Это должно включить работу докера, но на самом деле это не решит вашу проблему, потому что выгрузка происходит на машине докера и не фиксируется в образе докера.

Для получения желаемого эффекта вам понадобится дополнительно RUN docker save ... для экспорта извлеченного изображения в файл архива tar на изображении.

Тогда вам нужно будет добавить соответствующую логику в docker load ... импортировать файл архива tar.

Суть в том, что вы можете сделать это, но вы, вероятно, не должны. Я не думаю, что это спасет вас в любое время. Это, вероятно, будет стоить вам времени.

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