linux docker

Definicja: Doker

Docker stał się de facto standardem, jeśli chodzi o wdrożenia oparte na kontenerach. Od wdrożeń na małą skalę po aplikacje korporacyjne na dużą skalę, Docker stanowi podstawę orkiestracji opartej na kontenerach.

Docker w krótkim czasie zyskał taką popularność i przyjęcie w społeczności DevOps ze względu na sposób, w jaki został opracowany pod kątem przenośności i zaprojektowany dla nowoczesnej architektury mikrousług.

Ewolucja kontenerów

Jeśli uważasz, że konteneryzacja to nowa technologia, to tak nie jest. Google korzysta z własnej technologii konteneryzacji w swojej infrastrukturze od lat.

Koncepcja kontenera zaczęła się w pierwszej dekadzie XXI wieku. Tak naprawdę korzenie sięgają roku 1979, kiedy pojawił się chroot, czyli koncepcja zmiany katalogu głównego procesu.

Oto lista projektów opartych na kontenerach, które rozpoczęły się w 2000 roku.

Co to jest kontener systemu Linux (LXC)?

Zanim zagłębisz się bezpośrednio w koncepcje Dockera, musisz najpierw zrozumieć, czym jest kontener Linux.

W typowym środowisku wirtualnym jedna lub więcej maszyn wirtualnych działa na serwerze fizycznym przy użyciu funkcji hypervisor, takiej jak Xen, Hyper-V itp.

Z kolei kontenery działają na jądrze systemów operacyjnych. Możemy nazwać to wirtualizacją na poziomie systemu operacyjnego. Zanim przejdziemy do podstawowych koncepcji kontenerów, musisz zrozumieć dwie kluczowe koncepcje Linuksa.

  • Strefa użytkownika : Cały kod niezbędny do wykonywania programów użytkownika (aplikacji, procesów) nazywany jest „przestrzenią użytkownika”. Kiedy inicjujesz akcję programu, na przykład mającą na celu utworzenie pliku, proces w przestrzeni użytkownika wykonuje wywołanie systemowe do przestrzeni jądra.
  • Przestrzeń jądra : Jest to serce systemu operacyjnego, w którym znajduje się kod jądra

Kontener to proces

Uruchamiając aplikację, na przykład serwer WWW Nginx, w rzeczywistości uruchamiasz proces. Sam proces jest samodzielną instrukcją z ograniczoną izolacją.

Co by było, gdybyśmy mogli wyizolować proces, mając jedynie pliki i konfigurację potrzebne do działania i funkcjonowania. To właśnie robi kontener.

Kontener jest w rzeczywistości procesem z wystarczającą izolacją komponenty przestrzeni użytkownika więc sprawia wrażenie osobnego systemu operacyjnego.

Nadrzędny proces kontenerowy może mieć proces podrzędny. Można więc powiedzieć, że kontener to także grupa procesów.

Na przykład uruchomienie usługi Nginx powoduje uruchomienie nadrzędnego procesu Nginx. Proces nadrzędny obejmuje następnie procesy potomne, takie jak menedżer pamięci podręcznej, moduł ładujący pamięć podręczną i procesy robocze.

Zatem uruchamiając kontener Nginx, uruchamiasz główny proces Nginx w jego izolowanym środowisku. Pokażę Ci to praktycznie w poniższych sekcjach.

Każdy kontener ma wydzieloną przestrzeń użytkownikai możesz uruchomić wiele kontenerów na jednym hoście. Czy to oznacza, że ​​jeden kontener jest właścicielem całego systemu operacyjnego? NIE. W przeciwieństwie do maszyny wirtualnej z własnym jądrem, kontener zawiera tylko niezbędne pliki związane z konkretną dystrybucją i korzysta z jądra hosta współdzielonego. Jeszcze ciekawsze, możesz uruchamiać różne kontenery oparte na dystrybucjach Linuksa na jednym hoście, który dzieli tę samą przestrzeń jądra.

Na przykład możesz uruchomić kontener oparty na RHEL, CentOS, SUSE na serwerze Ubuntu. Jest to możliwe, ponieważ we wszystkich dystrybucjach Linuksa inna jest tylko przestrzeń użytkownika i taka sama przestrzeń jądra.

Podstawowa koncepcja kontenerów Linux

Poniższy obraz przedstawia wizualną reprezentację kontinuum systemu Linux.

Kontenery są izolowane na hoście przy użyciu dwóch funkcji jądra Linuksa, zwanych przestrzeniami nazw i grupami c.

Analogią ze świata rzeczywistego byłby budynek mieszkalny. Mimo że jest to jeden duży budynek, każde mieszkanie jest wyizolowane dla indywidualnych gospodarstw domowych posiadających własną tożsamość z licznikami wody, gazu i prądu. Do wykonania tej izolacji wykorzystujemy beton, konstrukcje stalowe i inne materiały budowlane. Nie masz wglądu do innych domów, chyba że pozwolą ci do nich wejść.

Podobnie możesz połączyć się z pojedynczym hostem zawierającym wiele kontenerów. Aby wyizolować kontenery z własnym procesorem, pamięcią, adresem IP, punktami podłączenia i procesami, potrzebujesz dwóch funkcji jądra Linuksa, zwanych przestrzeniami nazw i grupami c.

A lire également  Definicja interfejsu HMI

Czym właściwie jest Docker?

Docker jest projektem typu open source popularny, napisany w go i opracowany przez Dotcloud (firma PaaS).

Zasadniczo jest to silnik kontenerowy, który wykorzystuje funkcje jądra Linuksa, takie jak przestrzenie nazw i grupy c, do tworzenia kontenerów w systemie operacyjnym.

Oznacza to, że wszystkie koncepcje i funkcje kontenerów, których nauczyliśmy się w sekcji LXC, są wykonywane w bardzo prosty sposób przez Dockera. Wystarczy uruchomić kilka poleceń i ustawień Dockera, aby uruchomić kontenery.

Być może zastanawiasz się, czym Docker różni się od kontenera Linux (LXC), ponieważ wszystkie koncepcje i implementacja są podobne.

Docker został pierwotnie zbudowany na kontenerach Linuksa (LXC). Później Docker zastąpił LXC własnym kontenerem wykonawczym (który jest teraz częścią runc)

Oprócz tego, że jest technologią kontenerową, Docker ma dobrze zdefiniowane komponenty pakowania, które ułatwiają aplikacje pakowania. Przed Dockerem zarządzanie kontenerami nie było łatwe. Innymi słowy, wykonuje całą pracę niezbędną do oddzielenia aplikacji od infrastruktury, pakując wszystkie wymagania systemowe aplikacji w kontenerze.

Na przykład, jeśli masz plik jar Java, możesz go uruchomić na dowolnym serwerze, na którym jest zainstalowana Java. W ten sam sposób, Po spakowaniu kontenera z wymaganymi aplikacjami za pomocą Dockera możesz uruchomić go na dowolnym innym hoście na którym zainstalowany jest Docker.

Różnica między dokiem a kontenerem

Docker to technologia lub narzędzie opracowane w celu sprawnego zarządzania implementacją kontenerów.

Czy mogę zatem zarządzać kontenerem bez Dockera? Tak ! Oczywiście. Możesz używać technologii LXC do uruchamiania kontenerów na serwerach Linux.

Wszystko, co musisz wiedzieć o dockerze

Docker to szeroko stosowana platforma konteneryzacji. Powinieneś wiedzieć, że kontenery i mikrousługi są często wykorzystywane z perspektywy tworzenia i wdrażania aplikacji. Jest to rozwój „natywny dla chmury”. Docker jest zatem niezwykle popularną alternatywą w biznesie. Jeśli chcesz mieć dostęp do kompletny przewodnik po oknie dokowanym, możesz przejść do strony internetowej naszego partnera datascientest.com. Kontener to lekkie środowisko wykonawcze i alternatywa dla tradycyjnych technik wirtualizacji z maszyn wirtualnych.

Aby pomyślnie tworzyć nowoczesne oprogramowanie, aplikacje wdrożone na tym samym hoście muszą być odizolowane, aby zapobiec ich zakłócaniu. Do uruchamiania aplikacji wymagane są pakiety. Maszyny wirtualne służą do oddzielania aplikacji od siebie w identycznym systemie oraz do ograniczania konfliktów pomiędzy komponentami oprogramowania i rywalizacji o zasoby. Docker to rozwiązanie typu open source, bezpieczne i ekonomiczne. Docker służy również do uruchamiania kontenerów w systemie Windows lub Mac za pośrednictwem warstwy wirtualizacji systemu Linux. Dzięki temu wiesz, gdzie uzyskać więcej informacji o Dockerze i poznać wszystkie tajniki tej platformy konteneryzacji.

Aby pomyślnie tworzyć nowoczesne oprogramowanie, aplikacje wdrożone na tym samym hoście muszą być odizolowane, aby zapobiec ich zakłócaniu. Do uruchamiania aplikacji wymagane są pakiety. Maszyny wirtualne służą do oddzielania aplikacji od siebie w identycznym systemie oraz do ograniczania konfliktów pomiędzy komponentami oprogramowania i rywalizacji o zasoby. Docker to rozwiązanie typu open source, bezpieczne i ekonomiczne. Docker służy również do uruchamiania kontenerów w systemie Windows lub Mac za pośrednictwem warstwy wirtualizacji systemu Linux. Dzięki temu wiesz, gdzie uzyskać więcej informacji o Dockerze i poznać wszystkie tajniki tej platformy konteneryzacji.

Dlaczego Docker odniósł taki sukces?

Docker posiada wydajny przepływ pracy umożliwiający przeniesienie aplikacji z laptopa programisty do środowiska testowego, a następnie do produkcji. Więcej dowiesz się oglądając praktyczny przykład pakowania aplikacji do obrazu Dockera.

Czy wiesz, że uruchomienie kontenera Docker zajmuje mniej niż sekundę?

Jest niewiarygodnie szybki i może działać na dowolnym hoście z kompatybilnym jądrem Linuksa. (Jest również kompatybilny z systemem Windows)

Notatka : nie można uruchomić kontenera systemu Windows na hoście z systemem Linux, ponieważ nie ma obsługi jądra systemu Linux dla systemu Windows. Możesz przeczytać o kontenerach Windows tutaj

Docker używa unijnego systemu plików „Kopiuj przy zapisie” do przechowywania swoich obrazów. Za każdym razem, gdy w kontenerze zostaną wprowadzone zmiany, tylko zmiany zostaną zapisane na dysku przy użyciu modelu kopiowania przy zapisie.

Dzięki modelowi kopiowania przy zapisie zoptymalizowasz udostępnione warstwy pamięci dla wszystkich swoich kontenerów.