Różnica między chroot a Docker

15

Nie rozumiem różnicy między dokerem a chrootem. Tak, to miłe pod względem pakowania rejestru. Ale jakoś mam wrażenie, że to chroot z dodatkowymi dzwonkami i gwizdkami.

Wiem, że coś mi umknęło. Byłoby wspaniale wiedzieć, czym się różnią i potrzebę dokera, gdyby chroot mógł zrobić coś podobnego.

Nie mogłem też znaleźć tego Chockot Vs Docker wystarczająco jasno.

Vipin Menon
źródło
Cóż, tak, Docker nie robi nic, czego jądro nie zrobiłoby dla ciebie. Po prostu pakuje go w bardziej lub mniej spójne i dość łatwe w użyciu narzędzie. Możesz stworzyć własnego Dockera, jeśli sam będziesz chciał robić chroot, przestrzenie nazw, kwoty, NAT i całą resztę.
Gajusz

Odpowiedzi:

8

Cóż, dodatkowe dzwonki i gwizdki nazywane są izolacją procesu, kontener otrzymuje własną przestrzeń nazw z jądra hosta, co oznacza, że ​​program w kontenerze nie może próbować odczytać pamięci jądra ani zjadać więcej pamięci RAM niż jest to dozwolone.

Izoluje również stosy sieciowe, więc dwa procesy mogą nasłuchiwać na porcie 8080, na przykład, będziesz musiał obsługiwać routing na poziomie hosta, nie ma tutaj magii, ale pozwala to obsłużyć routing w jednym miejscu i uniknąć modyfikowania konfiguracji procesu do słuchaj wolnego portu.

Po drugie, chroot jest nadal do odczytu / zapisu, każda zmiana jest trwała, użycie kontenera dokera aufsrozpocznie się od czystego systemu plików przy każdym uruchomieniu kontenera (zmiany zostaną zachowane, jeśli zatrzymasz / uruchomisz IIRC).

Tak więc chociaż kontener można uznać za process namespace+ chroot, rzeczywistość jest nieco bardziej złożona.

Tensibai
źródło
Pamiętaj, że aufsnie jest już domyślnie używany. Teraz jestoverlay2
Vitalii Vitrenko
To prawda, ale myślę, że na razie jest więcej materiałów edukacyjnych odnoszących się do aufs niż overlay2 :)
Tensibai
Normalny proces nie może odczytać żadnej pamięci, której też nie powinien. Jeśli polegasz na Dockerze dla bezpieczeństwa, robisz to źle ...
Gaius,
@ Gaius, czytasz mnie źle, po prostu staram się dać OP wskazówki dotyczące wyszukiwania ... Dodawanie dokera w potoku dostarczania z całą swobodą, jaką daje programistom to, czego używają w środku, absolutnie nie jest punktem bezpieczeństwa. Przestrzenie nazw chronią jednak przed przepełnieniem stosu i przepełnieniem bufora z natury.
Tensibai,
5

Tak, jest absolutnie coś więcej niż chrootto, że nie mają ze sobą nic wspólnego.

  • Standardowy format pliku skryptu zawierający semantykę związaną z zadaniem ręki
  • Obrazy (w tym anonimowe obrazy pośrednie), buforowanie, nazywanie, pobieranie itp., W tym zaawansowane zarządzanie ( docker image prune...)
  • Kontenery (w tym własne tymczasowe systemy plików, nazewnictwo, możliwość do docker execnich itp.)
  • Zarządzanie procesami ( docker container ...)
  • Praca w sieci z prostą opcją, w tym międzykontynentalna sieć kontenerów itp.
  • Woluminy (w tym specjalne woluminy zarządzane)
  • docker-compose lub rój jako niskoprofilowe aktualizacje do znacznie więcej.
  • Duże zoo innych rozwiązań opartych na dokowanych kontenerach (OpenShift itp.).
AnoE
źródło