Могу ли я иметь несколько приложений на одном Dockerfile - PullRequest
0 голосов
/ 08 апреля 2019

Мы исследуем докеры и пытаемся выяснить, предоставляют ли докеры способ сделать следующее, чтобы устранить некоторые накладные расходы на управление с текущим подходом, который мы используем.

Мы смотрим на что-то вроде ниже:

  1. Иметь базовый шаблон с ОС Linux + App1 - Oracle + App2 - Mysql + App3 - Mongodb

  2. Всякий раз, когда у нас есть запрос, мы должны иметь возможность извлечь контейнер из базового шаблона для конкретного приложения. Пример: Контейнер, в котором установлена ​​ОС Linux + только приложение Oracle. Аналогично ОС + Mongodb на другом контейнере

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

Любой указатель на то, как мы можем достичь этого, был бы полезен. Может ли док-файл или что-то еще помочь?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 09 апреля 2019

Можешь? Да. Тебе следует? Нет.

Многоуровневая файловая система означает, что вы можете создавать несколько изображений и совместно использовать общие части файловой системы. Вы создаете свой Dockerfile с общими частями вверху Dockerfile или в общем базовом образе. Эти общие части должны быть минимальными, вам не нужно перестраивать app2 из-за изменения в app1.

Изображения должны быть помечены, с разным хранилищем для приложения и разным тегом для разных сборок каждого приложения. Сами изображения должны содержать двоичные файлы, библиотеки и другие зависимости, необходимые для запуска приложения, но не конфигурацию или постоянные данные. Конфигурация вводится извне с помощью переменных среды, аргументов командной строки, конфигов, секретов или тома только для чтения. И данные почти всегда сохраняются в том или базу данных.

Изображения не включают ОС, если под ОС вы включаете ядро ​​Linux. Контейнеры разделяют ядро ​​с хост-ОС. Не путайте контейнер с виртуальной машиной, они разные, ведут себя по-разному и управляются по-разному.

Для смешивания и сопоставления различных приложений с различными конфигурациями и базами данных наиболее целесообразно перейти к yml-файлу compose или kubernetes, в котором указываются образы и конфигурации для развертывания. Когда вы меняете приложения, это не просто изменение конфигов для монолитного изображения, вы просто вытягиваете соответствующее изображение для этой конкретной задачи.

0 голосов
/ 09 апреля 2019

Вы можете сделать это, но вы никогда не должны объединять несколько сервисов в одном контейнере.У него много недостатков и никаких преимуществ.

Несколько недостатков:

  1. Вы не можете эффективно ограничивать ресурсы для различных услуг
  2. Вы не можете масштабировать одну услугу независимо
  3. Ваши изображения будут огромного размера, так как кеш не может быть использован
  4. Иногда вы не можете разрешить конфликтующие зависимости
0 голосов
/ 08 апреля 2019

каждый докер должен иметь один PID .Это означает, что мы должны запустить один сервис в одном контейнере

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