2015-05-02 5 views
2

Я иногда использую Docker для своих разработок. Когда я это делаю, я обычно работаю над образцом LAMP из tutum.Докер - один процесс на контейнер?

Мой вопрос: не побеждает ли цель работы с Docker, если он запускает несколько процессов в одном контейнере? (например, контейнер начинал с изображения LAMP от Tutum). Разве не вся идея Docker отделить каждый процесс в отдельный контейнер?

+0

[README 'phusion/baseimage] (https://github.com/phusion/baseimage-docker#docker_single_process) решает этот вопрос. – jwodder

ответ

2

Обычно иногда необходимо использовать один контейнер для более чем одного процесса, например, в этой ситуации.

Такая ситуация возникает, когда процессы используются вместе для выполнения своей задачи. Я могу представить себе, например, ситуацию, когда кто-то хочет добавить запись в веб-приложение с помощью ELK (Elasticsearch, Logstash, Kibana). Эти вещи работают вместе и могут иметь диспетчер для мониторинга процессов внутри одного контейнера.

Но для большинства случаев лучше использовать один процесс на контейнер. Более того команда докер должен начать сам процесс, например, работает на Java-анкету на

/usr/bin/java -jar application.jar 

помимо запуска внешнего скрипта:

./launchApplication.sh 

См обсуждение http://www.reddit.com/r/docker/comments/2t1lzp/docker_and_the_pid_1_zombie_reaping_problem/, где проблема беспокоит.

4

Несмотря на то, что для разделения процессов в отдельных контейнерах это правило является хорошим правилом, это не главное преимущество/цель докера. Преимущество докера - неизменность. И если выброс двух процессов в один контейнер делает для более чистой логики, тогда идите на это. Хотя в этом случае я определенно рассмотрю, по крайней мере, отсечение БД в свой собственный контейнер и поговорю с ним через докерную ссылку. База данных не должна спускаться при каждом восстановлении изображения.

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