2015-03-19 6 views
12

Możesz zbudować kontener za pomocą Dockerfile w ciągu kilku sekund, a następnie dlaczego ludzie muszą zainstalować wirtualne środowisko wewnątrz kontenera w doku?Dlaczego ludzie tworzą virtualenv w kontenerze Docker?

To jest jak "maszyna wirtualna" w maszynie wirtualnej?

+5

Dalsza izolacja nigdy nie jest zła, szczególnie dlatego, że nie powoduje żadnych kosztów ogólnych. I uważam, że to dobry nawyk, aby go zatrzymać. –

+0

Muszę dodać: virtualenv nie jest maszyną wirtualną. Ani Docker. virtualenv tworzy kopię interpretera python i tworzy oddzielne miejsce dla bibliotek, izolując, gdzie zachowujesz swoje zależności. Prawie taka sama koncepcja Dockera, zachowujesz zależności w warstwach i izolujesz fragmenty pamięci, procesora, pamięci masowej, sieci itd. Dla swojego kontenera, nie uruchamiasz pełnego systemu operacyjnego. –

+3

Jedynym powodem, dla którego widzę, że kiedykolwiek używam virtualenv, jest kolidowanie z zależnością systemową, np. składnik systemu operacyjnego używa innej wersji biblioteki python. –

Odpowiedz

15

Pracuję z virtualenvs w Döcker i myślę, że istnieje kilka powodów:

  1. może chcesz odizolować aplikację z pakietów Pythona systemu
  2. może chcesz uruchomić niestandardową wersję Pythona, ale nadal zachować pakiety w systemie nienaruszony
  3. może trzeba precyzyjną kontrolę ziarna na pakietach zainstalowanych dla konkretnej aplikacji
  4. może trzeba uruchomić wiele aplikacji z różnymi wymaganiami

Myślę, że są to uzasadnione powody, aby dodać trochę pip install virtualenv na końcu instalacji! :)

+4

Ponieważ polityka dokowania jest zwykle "jedna aplikacja na kontener" czwarty punkt może nie być dobrym powodem. –

+1

dzięki @ BenoîtLatinier prawdopodobnie mówimy to samo: miałem na myśli to, ponieważ uruchamiasz aplikację wewnątrz kontenera, jest to dobry sposób na wyodrębnienie jej wymagań :) – gru

+0

Nie musisz wcześniej "RUN pip install virtualenv" w pliku docker utwórz katalog virtualenv, a następnie 'pip install' pozostałe pakiety, a nie na końcu instalacji? – Davos