2016-10-01 5 views
3

Я не уверен, что лучше всего использовать контейнер для докеров. Когда я использую виртуальную машину, скажем, ubuntu, для запуска веб-приложения я устанавливаю каждое программное обеспечение, необходимое для запуска приложения, такого как база данных, веб-службы и т. Д., И использую как автономную операционную систему.docker os container vs app container

Однако Docker может использоваться по-другому.

Учитывая сценарий, который я хочу запустить веб-приложение, у меня есть две опции:

  1. Установите все программное обеспечение на одном контейнере; установить базу данных, java и все другие необходимые программные средства, необходимые для запуска (т. е. использовать так же, как и то, как я буду использовать VM).

  2. Устанавливайте каждую заявку на отдельные контейнеры; базу данных в одном контейнере, веб-службу на другом контейнере и заставлять их разговаривать друг с другом.

Вариант 1), кажется, проще развернуть полный стек приложения, но может быть труднее масштабировать, если есть некоторые вопросы, усложнение зависимости между пакетами или распределением ресурсов операционной системы для каждого программного обеспечения.

Вариант 2), по-видимому, сложнее развернуть, но каждый контейнер можно обновить без особых проблем.

Какова распространенная практика среди пользователей Docker?

Edit: Ответ на это также отмечен в https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-container

ответ

4

Лучшим способ заключается в использовании отдельного контейнера для каждой службы (приложение). Таким образом, вы можете обновлять/изменять каждую службу независимо от других контейнеров. Docker работает очень хорошо для архитектуры микросервиса.

Используйте Docker Compose для запуска всех контейнеров только одной командой: docker-compose up. В Docker Compose вы можете определять зависимости между контейнерами. Таким образом, они будут подключаться автоматически.

Если вы хотите запускать каждый контейнер на отдельном хосте Linux, вы можете использовать Docker Swarm, чтобы вам не нужно было заниматься сетевыми технологиями.

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