jaka jest główna różnica między Dockerem a Snapem?

85

W ostatnim c't (niestety płatnym ) jest artykuł o Snapie i Flatpaku.

wprowadź opis zdjęcia tutaj

Brzmi bardzo podobnie do Dockera, wiele koncepcji jest takich samych. Teraz moje pytanie, jaka jest różnica między Snapem a Dockerem? Czy to różne przypadki użycia?

Iwanow
źródło

Odpowiedzi:

109

Być może przemówienie Marka Shuttlewortha „Dlaczego potrzebujemy innego pojemnika wyłącznie do aplikacji” w Container Camp, które jest odpowiednie dla twojego pytania. Na początku mówi ogólnie o maszynach wirtualnych, kontenerach i Dockerze, kontynuując snapy i ich dopasowanie w około dziewięć minut. Oto moje streszczenie:

  • Różne typy pojemników wyglądają tak samo, ale są używane do różnych celów.
  • Kontenery tak naprawdę nie istnieją na poziomie jądra. Możliwe są różnego rodzaju złudzenia. Niezależnie możemy tworzyć iluzje na temat tego, co widzą użytkownicy, sieć, dysk i procesy.
  • Różne typy pojemników naprawdę dotyczą różnych klas tworzonych złudzeń.
  • Snapy to:
    • Niezmienny, ale wciąż stanowi część systemu podstawowego.
    • Zintegrowane pod względem sieci, więc udostępnij adres IP systemu, w przeciwieństwie do Dockera, gdzie każdy kontener otrzymuje swój własny adres IP.
    • Innymi słowy, Docker daje nam coś tam . Snaps daje nam coś tutaj . Na przykład na pulpicie przystawka zapewnia bezpośrednio na niej aplikację.
    • Snap nie może skazić reszty systemu. Jest we własnym pudełku. Ale nadal widzi (tylko do odczytu) resztę systemu, co pozwala mu mówić i integrować się z systemem.

Pytałeś o różne przypadki użycia w porównaniu do Dockera. Oto, co mogą robić snapy, ale Docker nie: aplikacje komputerowe. Firmy zewnętrzne mogą dostarczać aplikacje komputerowe za pomocą przystawek, a użytkownicy mogą łatwo je instalować i aktualizować. Kontener Docker nie może (łatwo) graficznie współdziałać z użytkownikiem na ekranie, ładować dokumentów z katalogu domowego użytkownika ani prowadzić wideokonferencji za pośrednictwem kamery internetowej użytkownika. Snapy mogą (po uzyskaniu pozwolenia).

Możesz zapytać, jak to jest lepsze niż korzystanie z PPA. Ale w porównaniu do Dockera, to tak, jakby zapytać, jak Docker jest lepszy, niż ręczne instalowanie zależności w systemie. Jest lepiej, ale dokładnie jak najlepiej byłoby odpowiedzieć w osobnym, nieokreślonym pytaniu.

Robie Basak
źródło
3
To nie jest prawda. Docker może współpracować z aplikacjami komputerowymi (po uzyskaniu pozwolenia). github.com/jamrizzi/docker-gtk
Jam Risser
2
To brzmi jak Sandboxie dla Windows. Programy w trybie piaskownicy mogą otwierać okna dialogowe, uzyskiwać dostęp do wszystkich plików lokalnych, ale kiedy piszą, po prostu piszą w swoim obszarze izolowanym.
feedc0de
1
Do czego narzędzie, do którego prowadzi łącze, działa inaczej niż zwykłe okno dokowane? Możesz zamontować gniazdo x11 w dokerze bez specjalnej wersji dokera.
feedc0de
1
To nie jest narzędzie, to demonstracja
Jam Risser
1
@jamrizzi Wygląda na to, że to, co robisz, to po prostu zapewnianie dokerowi dostępu do gniazda X11 w skrypcie. Jest to dalekie od zaangażowania użytkownika w ten proces (gdzie jest okno „Docker chce uzyskać dostęp do wyświetlacza. Anulować czy zezwolić?”?)
Thorbjørn Ravn Andersen