Я не уверен, что лучше всего использовать контейнер для докеров. Когда я использую виртуальную машину, скажем, ubuntu, для запуска веб-приложения я устанавливаю каждое программное обеспечение, необходимое для запуска приложения, такого как база данных, веб-службы и т. Д., И использую как автономную операционную систему.docker os container vs app container
Однако Docker может использоваться по-другому.
Учитывая сценарий, который я хочу запустить веб-приложение, у меня есть две опции:
Установите все программное обеспечение на одном контейнере; установить базу данных, java и все другие необходимые программные средства, необходимые для запуска (т. е. использовать так же, как и то, как я буду использовать VM).
Устанавливайте каждую заявку на отдельные контейнеры; базу данных в одном контейнере, веб-службу на другом контейнере и заставлять их разговаривать друг с другом.
Вариант 1), кажется, проще развернуть полный стек приложения, но может быть труднее масштабировать, если есть некоторые вопросы, усложнение зависимости между пакетами или распределением ресурсов операционной системы для каждого программного обеспечения.
Вариант 2), по-видимому, сложнее развернуть, но каждый контейнер можно обновить без особых проблем.
Какова распространенная практика среди пользователей Docker?
Edit: Ответ на это также отмечен в https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-container