CodeGym /Kursy /Docker SELF /Docker: historia powstania i główne koncepty

Docker: historia powstania i główne koncepty

Docker SELF
Poziom 9 , Lekcja 0
Dostępny

1.1 Historia powstania Dockera

Wczesne lata i tło:

Historia Dockera zaczęła się długo przed jego oficjalnymi narodzinami w 2013 roku. Na początku lat 2000 wirtualizacja była już popularna, ale tradycyjne maszyny wirtualne wymagały znacznych zasobów i były mało elastyczne. Właśnie wtedy narodził się pomysł konteneryzacji. LXC (Linux Containers) był jednym z pierwszych projektów, pozwalającym uruchamiać izolowane kontenery przy użyciu możliwości jądra Linux.

Powstanie pomysłu:

Docker pojawił się jako część wewnętrznego projektu firmy dotCloud – startupu założonego przez Solomona Hykesa i Sebastiana Pultza w 2010 roku. DotCloud oferował platformę jako usługę (PaaS) i udostępniał developerom narzędzia do wdrażania i zarządzania aplikacjami webowymi. Ale gdy zespół pracował nad dotCloud, napotkał problemy z izolacją aplikacji i zarządzaniem zależnościami. Tak pojawił się pomysł stworzenia uniwersalnej technologii kontenerowej, która rozwiąże te problemy.

Rozwój i pierwsze wydanie:

Właściwie pierwsze wersje Dockera powstały w dotCloud, a jego oficjalnym “ojcem” jest Solomon Hykes. Najpierw Dockera ogłoszono na konferencji PyCon w marcu 2013 roku, a następnie udostępniono jego kod źródłowy na GitHubie. Początkowo Docker korzystał z LXC (Linux Containers), ale później zespół stworzył własną implementację kontenerów, co poprawiło wydajność i elastyczność systemu.

Uznanie i rozwój społeczności:

Docker szybko przyciągnął uwagę developerów i specjalistów IT. Nic dziwnego: jest prosty w konfiguracji, a możliwości – niesamowicie szerokie. Kilka miesięcy po ogłoszeniu projekt zdobył masę gwiazdek na GitHubie i zebrał aktywną społeczność kontrybutorów. W 2014 roku firma dotCloud zmieniła nazwę na Docker, Inc., skupiając się na rozwijaniu nowej platformy kontenerowej.

Kluczowym wydarzeniem w historii Dockera było uznanie go przez duże firmy z branży IT. W 2014 roku Red Hat, Google i Microsoft zaczęły aktywnie wspierać Dockera, integrując go w swoje produkty i usługi. To przyczyniło się do jego szybkiego rozpowszechnienia i ugruntowania statusu standardu de facto w konteneryzacji.

Partnerstwa i ekosystem:

Docker rozwijał się dalej i przyciągał inwestycje. W 2014 roku firma uzyskała 40 milionów dolarów w ramach finansowania serii C (seria C – trzeci etap finansowania venture dla startupów lub firm, które już osiągnęły pewien sukces i chcą dalej się rozwijać), co pozwoliło rozszerzyć zespół i przyspieszyć rozwój. Docker zaczął aktywnie współpracować z innymi firmami, budując ekosystem wokół swojej platformy. Uruchomiono projekty Docker Compose (do zarządzania aplikacjami wielokontenerowymi) i Docker Swarm (do orkiestracji kontenerów).

W 2015 roku Docker ogłosił strategiczne partnerstwo z Microsoftem, co pozwoliło zintegrować Dockera z Windows Server i Azure. To był ważny krok w rozwoju technologii kontenerowej poza społecznością Linux i uczyniło Dockera dostępnym dla szerszej publiczności.

Konkurencja i standaryzacja:

Wraz z rosnącą popularnością Dockera na rynku pojawiły się konkurujące projekty i technologie. W 2015 roku Google zaprezentował Kubernetes – system orkiestracji kontenerów, który szybko zdobył popularność dzięki elastyczności i funkcjonalności. Pomimo konkurencji, Docker i Kubernetes wzajemnie się uzupełniają, tworząc fundament nowoczesnej infrastruktury kontenerowej.

W 2017 roku Docker zaczął wspierać Open Container Initiative (OCI) – projekt standaryzacji formatów kontenerów i czasu ich uruchamiania. To zapewniło kompatybilność między różnymi platformami kontenerowymi i uprościło integrację Dockera z innymi narzędziami.

Obecny stan i przyszłość:

Obecnie Docker pozostaje kluczowym narzędziem w arsenale developerów i administratorów systemów. Jego ekosystem wciąż rośnie, obejmując projekty Docker Desktop (do pracy z Dockerem na lokalnych maszynach) i Docker Hub (publiczny rejestr obrazów).

Docker aktywnie rozwija technologie związane z bezpieczeństwem, wydajnością i łatwością użycia. Na przykład Docker Content Trust zapewnia weryfikację integralności i autentyczności obrazów, a Docker Scan pozwala wykrywać podatności w kontenerach.

1.2 Główne koncepcje Docker

0. Wirtualna „wirtualna maszyna”

Z punktu widzenia aplikacji uruchomionej wewnątrz kontenera Docker, kontener Docker to wirtualna maszyna. Ale w przeciwieństwie do zwykłych wirtualnych maszyn, Docker to bardzo lekka system. Bo tak naprawdę to nie jest pełnoprawna wirtualna maszyna, a wirtualna „wirtualna maszyna”.

System operacyjny Linux pozwala izolować aplikacje od siebie nawzajem tak, że każda z nich działa, jakby znajdowała się w swoim własnym systemie operacyjnym. Takie unikalne środowisko, działające na rzeczywistym systemie operacyjnym, to kontener.

1. Izolacja:

Jedną z kluczowych cech Docker jest zdolność zapewnienia izolacji aplikacji i ich zależności. Osiąga się to za pomocą namespaces i cgroups w jądrze Linux. Namespaces zapewniają izolację procesów: każdy kontener posiada własny zestaw procesów, interfejsów sieciowych i systemu plików. Cgroups pozwalają ograniczać i kontrolować użycie zasobów (CPU, pamięć i dysk) przez każdy kontener. Taka izolacja sprawia, że kontenery są niezależne od siebie i od systemu hosta, co zwiększa bezpieczeństwo i niezawodność aplikacji.

2. Przenośność:

Docker zapewnia wysoką przenośność aplikacji. Oznacza to, że ten sam kontener można uruchomić na dowolnym serwerze: na lokalnym komputerze dewelopera, w środowisku testowym lub na platformie chmurowej. Całe środowisko uruchomieniowe, w tym kod aplikacji, zależności, biblioteki i pliki konfiguracyjne, jest pakowane w kontenerze. Eliminuje to problemy z niekompatybilnością środowiska i pozwala deweloperom mieć pewność, że ich aplikacje będą działać w każdym środowisku bez zmian.

3. Lekkość:

W przeciwieństwie do wirtualnych maszyn, które wymagają instalacji osobnego systemu operacyjnego dla każdego egzemplarza, kontenery Docker wykorzystują jądro systemu hosta. To sprawia, że kontenery są znacznie lżejsze i szybsze w uruchamianiu. Zajmują mniej miejsca na dysku i zużywają mniej pamięci operacyjnej, co pozwala na uruchamianie większej liczby kontenerów na jednym serwerze w porównaniu do maszyn wirtualnych.

4. Obrazy Docker:

Obraz Docker to szablon, z którego tworzone są kontenery. Obraz zawiera wszystko potrzebne do pracy aplikacji: kod, biblioteki, zależności i pliki konfiguracyjne. Obrazy można tworzyć od zera za pomocą Dockerfile — specjalnego skryptu opisującego kroki tworzenia obrazu. Dodatkowo istnieje wiele gotowych obrazów w Docker Hub — publicznym rejestrze obrazów Docker. Docker Hub pozwala deweloperom dzielić się swoimi obrazami i korzystać z obrazów stworzonych przez innych.

5. Warstwowy system plików:

Docker wykorzystuje warstwowy system plików (Union File System), który pozwala oszczędzać miejsce i zasoby. Każdy obraz składa się z kilku warstw, gdzie każda warstwa reprezentuje zmiany w porównaniu do poprzedniej. Na przykład jedna warstwa może zawierać podstawowy system operacyjny, inna — zainstalowane biblioteki, a trzecia — kod aplikacji. Przy tworzeniu kontenera z obrazu dodawana jest nowa warstwa do zapisywania zmian, nie naruszająca pierwotnych warstw. To zmniejsza ilość danych przesyłanych przez sieć i przyspiesza proces tworzenia kontenerów.

6. Automatyzacja i orkiestracja:

Docker pozwala na automatyzację tworzenia, testowania i wdrażania aplikacji za pomocą różnych narzędzi. Docker Compose jest używany do zarządzania aplikacjami wielokontenerowymi. Dzięki niemu można opisać wszystkie usługi w jednym pliku (docker-compose.yml) i uruchomić je jednym poleceniem. Do orkiestracji kontenerów w dużych klastrach stosuje się Kubernetes — system zarządzania kontenerami, zapewniający automatyczne skalowanie, odzyskiwanie po awarii i równoważenie obciążenia.

1.3 Zastosowanie Dockera

Docker jest aktywnie wykorzystywany w różnych dziedzinach IT. Omówmy główne kierunki:

1. Tworzenie i testowanie:

Programiści korzystają z Dockera do tworzenia izolowanych środowisk programistycznych i testowych. Umożliwia to pracę z różnymi wersjami bibliotek i frameworków bez konfliktów. Testerzy mogą szybko wdrażać środowiska do przeprowadzania testów automatycznych.

2. Ciągła integracja i wdrażanie (CI/CD):

Docker upraszcza proces ciągłej integracji i wdrażania. Dzięki niemu można tworzyć obrazy aplikacji i testować je na każdym etapie budowy, co sprawia, że proces wdrażania jest niezawodny i przewidywalny.

3. Mikroserwisy:

Docker to idealne rozwiązanie dla architektury mikroserwisowej. W takiej architekturze aplikacja jest podzielona na małe, niezależne usługi, z których każdą można wdrażać i skalować osobno.

4. Obliczenia w chmurze:

Docker upraszcza wdrażanie aplikacji w chmurze dzięki jednolitemu formatowi pakowania wszystkich komponentów. Zapewnia to łatwe przenoszenie aplikacji między różnymi platformami chmurowymi a serwerami lokalnymi.

Historia Dockera to droga innowacji i współpracy, która zmieniła przemysł IT. Rozpocząwszy jako wewnętrzny projekt małego startupu, Docker stał się globalnym fenomenem, który nadal wpływa na rozwój i wdrażanie aplikacji na całym świecie. Ta droga pokazuje, jak idea, zrealizowana z wytrwałością i jasną wizją, może przekształcić całą branżę.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION