Twórca | Salomon Hykes |
---|---|
Opracowany przez | Docker, Inc. ( w ) |
Ostatnia wersja | 20.10.7 (2 czerwca 2021) |
Kaucja | github.com/moby/moby |
Stan projektu | W aktywnym rozwoju |
Napisane w | Udać się |
System operacyjny | Linux , Microsoft Windows , macOS i Unix |
Środowisko | Wieloplatformowy |
Rodzaj | Pojemnik |
Polityka dystrybucji | Wolny |
Licencja | Licencja Apache w wersji 2.0 i licencja własnościowa |
Stronie internetowej | www.docker.com |
Docker to darmowe oprogramowanie do uruchamiania aplikacji w kontenerach oprogramowania.
Według firmy badawczej 451 Research „Docker to narzędzie, które może spakować aplikację i jej zależności w izolowany kontener, który można uruchomić na dowolnym serwerze”. Nie chodzi tu o wirtualizację , ale o konteneryzację , lżejszą formę, która do działania opiera się na częściach maszyny hosta. Takie podejście zwiększa elastyczność i przenośność uruchamiania aplikacji, która będzie mogła działać niezawodnie i przewidywalnie na szerokiej gamie hostów, czy to na maszynie lokalnej, prywatnej lub publicznej chmurze, samej maszynie itp.
Technicznie rzecz biorąc, Docker rozszerza standardowy format kontenera systemu Linux , LXC , o wysokopoziomowe API zapewniające wygodne rozwiązanie do wirtualizacji, które uruchamia procesy w izolacji. Aby osiągnąć swoje cele, Docker używa m.in. LXC, cgroups i samego jądra Linuksa . W przeciwieństwie do tradycyjnych maszyn wirtualnych kontener Docker nie zawiera systemu operacyjnego, lecz opiera się na funkcjonalności systemu operacyjnego zapewnianej przez maszynę hosta.
Technologię kontenerów Dockera można wykorzystać do skalowania systemów rozproszonych tak, aby działały autonomicznie z pojedynczej maszyny fizycznej lub pojedynczej instancji na węzeł. Umożliwia to wdrażanie węzłów, gdy zasoby stają się dostępne, zapewniając bezproblemowe wdrażanie podobne do PaaS dla systemów takich jak Apache Cassandra , Riak lub innych systemów rozproszonych.
Docker umożliwia implementację kontenerów działających w izolacji za pośrednictwem API wysokiego poziomu. Zbudowany w oparciu o możliwości jądra Linux (zwłaszcza cgroups i przestrzenie nazw), kontener Docker, w przeciwieństwie do tradycyjnych maszyn wirtualnych, nie wymaga ani nie udostępnia oddzielnego systemu operacyjnego. Opiera się raczej na funkcjonalności jądra i wykorzystuje izolację zasobów (takich jak procesor, pamięć, wejścia / wyjścia i połączenia sieciowe), a także oddzielne przestrzenie nazw w celu odizolowania systemu operacyjnego, takiego jak widziana przez aplikację. Docker uzyskuje dostęp do możliwości wirtualizacji jądra Linux, albo bezpośrednio przez bibliotekę runc (dostępną od wersji Docker 0.9), albo pośrednio przez libvirt, LXC (Linux Containers) lub systemd-nspawn.
Korzystanie z platformy Docker do tworzenia kontenerów i zarządzania nimi może uprościć wdrażanie systemów rozproszonych, umożliwiając autonomiczne działanie wielu aplikacji, zadań w tle i innych procesów na pojedynczej maszynie fizycznej lub na wielu odizolowanych maszynach. Pozwala to na wdrażanie węzłów jako zasobów na żądanie, zapewniając w ten sposób platformę wdrażania w stylu PAAS i skalowalność systemów takich jak Apache Cassandra , MongoDB lub Riak , a także upraszczając tworzenie i obsługę kolejek zadań i innych systemów rozproszonych.
Cel kontenera jest taki sam, jak w przypadku wirtualnego serwera dedykowanego : hostowanie usług na tym samym serwerze fizycznym, izolując je od siebie. Jednak kontener jest mniej zamrożony niż maszyna wirtualna pod względem rozmiaru dysku i przydzielonych zasobów.
Kontener służy do odizolowania każdej usługi: serwera WWW, bazy danych, aplikacji, które mogą być uruchamiane niezależnie w ich dedykowanym kontenerze, zawierającym tylko niezbędne zależności. Każdy kontener może być połączony z innymi za pomocą sieci wirtualnych. Możliwe jest montowanie woluminów dyskowych z komputera hosta w kontenerze. Jeśli w kontenerze nie zostanie uruchomiony żaden proces, kontener zostanie zatrzymany. Czasami mówimy o wirtualizacji systemu operacyjnego: w przeciwieństwie do wirtualizacji, w której oprogramowanie emuluje różne maszyny na maszynie fizycznej, konteneryzacja emuluje różne systemy operacyjne na jednym systemie operacyjnym.
Docker jest rozwijany przez Solomona Hykesa na potrzeby wewnętrznego projektu dotCloud, francuskiej firmy działającej w ramach platformy jako usługi , przy udziale Andrei Luzzardi i Francois-Xaviera Bourleta, również pracowników dotCloud. Docker to ewolucja oparta na autorskich technologiach dotCloud, zbudowanych na projektach open source .
Docker jest dystrybuowany jako projekt open source od marca 2013.
Jest to obecnie najczęściej używany silnik konteneryzacji. Ogromną zaletą Dockera jest możliwość modelowania każdego kontenera jako obrazu, który może być przechowywany lokalnie lub w Docker Hub, miejscu publicznym, w którym wiele obrazów jest regularnie publikowanych i aktualizowanych.
W 2019 r. na konferencji DockerCon 2019 ogłoszono wersję 3 platformy Docker 2019. W listopadzie 2019 r. firma Docker sprzedała swój produkt „Docker Enterprise” firmie Mirantis i zebrała blisko 35 mln dolarów.
Integracja Dockera została wykonana z następującymi narzędziami do zarządzania infrastrukturą:
19 września 2013 r. Red Hat i Docker ogłosili współpracę w zakresie Fedory , Red Hat Enterprise Linux i Openshift. W maju 2015 r. firma Synology , producent serwerów NAS , zintegrowała platformę Docker ze swoim wewnętrznym oprogramowaniem DSM v5.2.