2015-03-19 3 views
12

Вы можете создать контейнер с Dockerfile за несколько секунд, а затем, почему люди должны установить виртуальную среду внутри контейнера докеров?Почему люди создают virtualenv в контейнере докеров?

Это как «виртуальная машина» на виртуальной машине?

+5

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

+0

Я должен добавить: virtualenv не является виртуальной машиной. Ни Докер. virtualenv просто создает копию интерпретатора python и создает отдельное место для библиотек, выделяя, где вы храните свои зависимости. Почти такая же концепция для Docker, вы сохраняете свои зависимости в слоях, и вы изолируете части памяти, процессор, память, сеть и т. Д. Для вашего контейнера, вы не запускаете полную ОС. –

+3

Единственная причина, по которой я вижу когда-либо использовать virtualenv, - это если вы столкнулись с системной зависимостью, например. компонент ОС использует другую версию python lib. –

ответ

15

Я работаю с virtualenvs в Докер, и я думаю, что есть несколько причин:

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

Я думаю, что это все достаточно веские причины, чтобы добавить немного pip install virtualenv в конце установки! :)

+4

Поскольку политика docker имеет тенденцию быть «одним приложением на контейнер», четвертая точка может не быть веской причиной. –

+1

спасибо @ BenoîtLatinier, мы, вероятно, говорим то же самое: я имел в виду, что, поскольку вы запускаете приложение внутри контейнера, это хороший способ изолировать его требования :) – gru

+0

Вам не нужно было бы «RUN pip install virtualenv' раньше в файле docker, создайте каталог virtualenv, а затем 'pip install 'остальную часть пакетов там, а не в конце установки? – Davos

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