Komplexní ekosystém Docker nabízí vývojářům řadu možností pro nasazení aplikací, koordinaci kontejnerů a další. Projdeme si nejdůležitější nástroje Docker a poskytneme vám přehled nejoblíbenějších projektů třetích stran, které vyvíjejí open-source nástroje Docker.

Jaké jsou základní nástroje/komponenty Dockeru?

Dnes je Docker mnohem víc než jen sofistikovaná platforma pro správu softwarových kontejnerů. Vývojáři vytvořili řadu různých nástrojů Docker, které usnadňují, zrychlují a zjednodušují nasazování aplikací prostřednictvím distribuované infrastruktury a cloudových prostředí. Kromě nástrojů pro clusterování a orchestraci existuje také centrální tržiště aplikací a nástroj pro správu cloudových zdrojů.

Docker Engine

Když vývojáři hovoří o „Dockeru“, obvykle mají na mysli open-source klient-serverovou aplikaci, kterátvoří základ kontejnerové platformy. Tato aplikace se nazývá Docker Engine. Ústředními komponenty Docker Engine jsou Docker daemon, REST API a CLI (rozhraní příkazového řádku), které slouží jako uživatelské rozhraní.

Díky tomuto designu můžete komunikovat s Docker Engine prostřednictvím příkazů příkazového řádku a pohodlně spravovat obrazy Docker, soubory Docker a kontejnery Docker z terminálu.

Obrázek: Schematic representation of the Docker engine
The main components of the Docker engine: the Docker daemon, REST API and Docker CLI

Podrobný popis Docker Engine najdete v našem tutoriálu Docker pro začátečníky Tutoriál Docker: instalace a první kroky.

Docker Hub

Docker Hub poskytuje uživatelům cloudový registr, který umožňuje stahování obrazů Docker, jejich centrální správu a sdílení s ostatními uživateli Docker. Registrovaní uživatelé mohou ukládat obrazy Docker veřejně nebo v soukromých repozitářích. Stažení veřejného obrazu (v terminologii Docker známé jako „pulling“ ) nevyžaduje uživatelský účet. Integrovaný mechanismus značek umožňuje verzování obrazů.

Kromě veřejných repozitářů jiných uživatelů Dockeru existuje také mnoho zdrojů od vývojářského týmu Dockeru a známých open-source projektů, které lze najít v oficiálních repozitářích v Docker Hub. Mezi nejoblíbenější obrazy Dockeru patří webový server NGINX, databáze Redis v paměti, sada nástrojů BusyBox Unix a distribuce Ubuntu Linux.

Obrázek: Official repositories in the Docker node
You can find more than 100,000 free images in the official Docker repositories.

Organizace jsou další důležitou funkcí Docker Hubu, která uživatelům Dockeru umožňuje vytvářet soukromé repozitáře, které jsou dostupné pouze vybrané skupině osob. Přístupová práva se v rámci organizace spravují pomocí týmů a členství ve skupinách.

Docker Swarm

Docker Engine obsahuje nativní funkci, která uživatelům umožňuje spravovat hostitele Docker v klastrech nazývaných swarms. Funkce správy a koordinace klastrů zabudované do Docker Engine jsou založeny na sadě nástrojů Swarmkit. Pokud používáte starší verzi kontejnerové platformy, je nástroj Docker k dispozici jako samostatná aplikace.

Jako nativní nástroj pro clusterování Dockeru shromažďuje Swarm skupinu hostitelů Dockeru do jednoho virtuálního hostitele a poskytuje REST API Dockeru. Jakýkoli nástroj Dockeru spojený s démonem Dockeru může přistupovat ke Swarme a škálovat se na libovolný počet hostitelů Dockeru. Pomocí CLI Docker Engine mohou uživatelé vytvářet swarmy, distribuovat aplikace v clusteru a spravovat chování swarmu, aniž by museli používat další software pro orchestraci.

Dockerové enginy, které byly sloučeny do clusterů, běží v režimu swarm. Tuto možnost vyberte, pokud chcete vytvořit nový cluster nebo přidat Dockerový hostitel do existujícího swarmu. Jednotlivé Dockerové hostitele v clusteru se označují jako „uzly“. Uzly clusteru mohou běžet jako virtuální hostitelé na stejném lokálním systému, ale častěji se používá cloudové řešení, kde jsou jednotlivé uzly Dockerového swarmu distribuovány napříč různými systémy a infrastrukturami.

Software je založen na architektuře master-worker. Když mají být úkoly distribuovány v roji, uživatelé předávají službu uzlu správce. Správce je pak zodpovědný za plánování kontejnerů v clusteru a slouží jako primární uživatelské rozhraní pro přístup k prostředkům roje.

Řídicí uzel odesílá jednotlivé jednotky, známé jako úkoly, do pracovních uzlů.

  • Služby: služby jsou ústředními strukturami v klastrech Docker. Služba definuje úkol, který má být proveden v klastru Docker. Služba se vztahuje ke skupině kontejnerů, které jsou založeny na stejném obrazu. Při vytváření služby uživatel určí, který obraz a příkazy se použijí. Služby navíc nabízejí možnost škálování aplikací. Uživatelé platformy Docker jednoduše definují, kolik kontejnerů má být pro službu spuštěno.
  • Úkoly: aby bylo možné služby v clusteru distribuovat, jsou rozděleny do jednotlivých pracovních jednotek (úkolů) pomocí uzlu správce. Každý úkol zahrnuje kontejner Docker a příkazy, které se v něm provádějí.

Kromě správy clusterů a koordinace kontejnerů mohou uzly správce ve výchozím nastavení také vykonávat funkce pracovních uzlů – pokud tyto uzly striktně neomezíte pouze na správu.

Agentní program běží na každém pracovním uzlu. Ten přijímá úkoly a poskytuje příslušné zprávy o stavu hlavního uzlu ohledně postupu přenášeného úkolu. Následující grafika znázorňuje schematické znázornění Docker Swarm:

Obrázek: Schematic representation of a Docker Swarm
The manager-worker architecture of a Docker Swarm

Při implementaci Docker Swarm se uživatelé obecně spoléhají na Docker machine.

Docker Compose

Docker Compose umožňuje sloučit více kontejnerů a spustit je jediným příkazem. Základním prvkem Compose je centrální řídicí soubor založený na oceněném jazyce YAML. Syntaxe tohoto souboru Compose je podobná syntaxi open-source softwaru Vagrant, který se používá při vytváření a provisioningu virtuálních strojů.

V souboru docker-compose.yml můžete definovat libovolný počet softwarových kontejnerů, včetně všech závislostí, a také jejich vzájemné vztahy. Takové aplikace s více kontejnery se řídí podle stejného vzoru jako jednotlivé softwarové kontejnery. Pomocí příkazudocker-compose v kombinaci s požadovaným podřízeným příkazem můžete spravovat celý životní cyklus aplikace.

Tento nástroj Docker lze snadno integrovat do clusteru založeného na Swarm. Tímto způsobem můžete spouštět aplikace s více kontejnery vytvořené pomocí Compose na distribuovaných systémech stejně snadno jako na jediném hostiteli Docker.

Další funkcí Docker Compose je integrovaný mechanismus škálování. S pomocí orchestračního nástroje můžete pohodlně pomocí příkazového řádku definovat, kolik kontejnerů chcete spustit pro konkrétní službu.

Jaké nástroje Docker od třetích stran existují?

Kromě interního vývoje společnosti Docker Inc. existují různé softwarové nástroje a platformy od externích poskytovatelů, které poskytují rozhraní pro Docker Engine nebo byly speciálně vyvinuty pro populární kontejnerovou platformu. Mezi nejoblíbenější open-source projekty v ekosystému Docker patří orchestrační nástroj Kubernetes, nástroj pro správu clusterů Shipyard, řešení pro přepravu více kontejnerů Panamax, platforma pro kontinuální integraci Drone, cloudový operační systém OpenStack a operační systém datového centra D2iQ DC/OS, který je založen na správci clusterů Mesos.

Kubernetes

Docker nemůže vždy přijít s vlastními orchestrovacími nástroji, jako jsou Swarm a Compose. Z tohoto důvodu již řadu let různé společnosti investují do vlastního vývoje a vytvářejí nástroje na míru, které mají usnadnit provoz kontejnerové platformy ve velkých distribuovaných infrastrukturách. Mezi nejoblíbenější řešení tohoto typu patří open-source projekt Kubernetes.

Kubernetes je správce clusterů pro aplikace založené na kontejnerech. Cílem Kubernetes je automatizovat aplikace v clusteru. K tomu tento orchestrační nástroj využívá jako ovládací rozhraní REST-API, program příkazového řádku a grafické webové rozhraní. Pomocí těchto rozhraní lze spouštět automatizace a vyžádat si zprávy o stavu. Kubernetes můžete použít k:

  • spouštět kontejnerové fotografie na clusteru,
  • instalovat a spravovat aplikace v distribuovaných systémech,
  • škálovat aplikace a
  • využívat hardware co nejlépe.

Za tímto účelem Kubernetes kombinuje kontejnery do logických částí, které se nazývají pody. Pody představují základní jednotky správce clusteru, které lze v clusteru distribuovat pomocí plánování.

Stejně jako Docker Swarm je i Kubernetes založen na architektuře master-worker. Cluster se skládá z Kubernetes master a různých workerů, kteří se také nazývají Kubernetes uzly (nebo minioni). Kubernetes master funguje jako centrální řídicí rovina v clusteru a skládá se ze čtyř základních komponent, které umožňují přímou komunikaci v clusteru a distribuci úkolů. Kubernetes master se skládá z API serveru, konfigurační paměti etcd, plánovače a správce řadičů.

  • API server: všechny automatizace v clusteru Kubernetes jsou spouštěny pomocí REST-API přes API server. Ten funguje jako centrální administrační rozhraní v clusteru.
  • etcd: open-source konfigurační paměť etcd lze považovat za paměť clusteru Kubernetes. Key Value Store, který CoreOS vyvinul speciálně pro distribuované systémy, ukládá konfigurační data a zpřístupňuje je všem uzlům v clusteru. Aktuální stav clusteru lze kdykoli spravovat prostřednictvím etcd.
  • Scheduler: scheduler je zodpovědný za distribuci skupin kontejnerů (podů) v clusteru. Určuje požadavky podu na zdroje a poté je porovnává s dostupnými zdroji jednotlivých uzlů v clusteru.
  • Controller manager: controller manager je služba Kubernetes master a řídí orchestraci regulací stavu clusteru a prováděním rutinních úkolů. Hlavním úkolem controller manageru je zajistit, aby stav clusteru odpovídal definovanému cílovému stavu.

Celkové komponenty masteru Kubernetes mohou být umístěny na stejném hostiteli nebo distribuovány na několika master hostech v rámci clusteru s vysokou dostupností.

Zatímco Kubernetes master je zodpovědný za orchestraci, pody distribuované v clusteru jsou spouštěny na hostech, Kubernetes uzlech, které jsou podřízené masteru. K tomu je nutné, aby na každém Kubernetes uzlu běžel kontejnerový engine. Ačkoli Docker je de facto standardem, Kubernetes nemusí používat konkrétní kontejnerový engine.

Kromě kontejnerového enginu zahrnují uzly Kubernetes následující komponenty:

  • kubelet: kubelet je agent, který běží na každém uzlu Kubernetes a slouží k ovládání a správě uzlu. Jako centrální kontaktní bod každého uzlu je kubelet připojen k masteru Kubernetes a zajišťuje předávání a příjem informací z řídicí roviny.
  • kube-proxy: navíc na každém uzlu Kubernetes běží proxy služba kube-proxy. Ta zajišťuje, že požadavky zvenčí jsou předávány příslušným kontejnerům, a poskytuje služby uživatelům aplikací založených na kontejnerech. Kube-proxy také nabízí základní vyvažování zátěže.

Následující grafika znázorňuje schematické znázornění architektury master-node, na které je založena orchestrační platforma Kubernetes:

Obrázek: Schematic representation of the Kubernetes architecture
The master-node architecture of the orchestration platform Kubernetes

Kromě základního projektu Kubernetes existuje také řada nástrojů a rozšíření, které umožňují přidat další funkce do orchestrovací platformy. Nejpopulárnější jsou nástroje pro monitorování a diagnostiku chyb Prometheus, Weave Scope a sysdig, stejně jako správce balíčků Helm. Existují také pluginy pro Apache Maven a Gradle, stejně jako java API, které umožňuje vzdálené ovládání Kubernetes.

Loděnice

Shipyard je komunitně vyvinuté řešení pro správu založené na Swarm, které uživatelům umožňuje spravovat zdroje Docker, jako jsou kontejnery, obrazy, hostitelé a soukromé registry, prostřednictvím grafického uživatelského rozhraní. Je k dispozici jako webová aplikace prostřednictvím prohlížeče. Kromě funkcí pro správu clusterů, ke kterým lze přistupovat prostřednictvím centrálního webového rozhraní, nabízí Shipyard také ověřování uživatelů a řízení přístupu na základě rolí.

Software je 100% kompatibilní s Docker remote API a používá open-source NoSQL databázi RethinkDB k ukládání dat pro uživatelské účty, adresy a události. Software je založen na sadě nástrojů pro správu clusterů Citadel a skládá se ze tří hlavních komponent: řadiče, API a uživatelského rozhraní.

  • Řídicí jednotka Shipyard: řídicí jednotka je základní součástí nástroje pro správu Shipyard. Řídicí jednotka Shipyard komunikuje s RethinkDB za účelem ukládání dat a umožňuje oslovit jednotlivé hostitele v clusteru Docker a řídit události.
  • Shipyard API: Shipyard API je založeno na REST. Všechny funkce nástroje pro správu jsou ovládány prostřednictvím Shipyard API.
  • Uživatelské rozhraní Shipyard (UI): uživatelské rozhraní Shipyard je aplikace AngularJS, která uživatelům poskytuje grafické uživatelské rozhraní pro správu klastrů Docker ve webovém prohlížeči. Veškerá interakce v uživatelském rozhraní probíhá prostřednictvím Shipyard API.

Další informace o open-source projektu naleznete na oficiálních stránkách Shipyard.

Panamax

Vývojáři open-source softwarového projektu Panamax si kladou za cíl zjednodušit nasazení aplikací s více kontejnery. Tento bezplatný nástroj nabízí uživatelům grafické uživatelské rozhraní, které umožňuje pohodlně vyvíjet, nasazovat a distribuovat složité aplikace založené na kontejnerech Docker pomocí drag-and-drop.

Panamax umožňuje ukládat komplexní aplikace s více kontejnery jako šablony aplikací a distribuovat je v clusterových architekturách pouhým jedním kliknutím. Pomocí integrovaného obchodu s aplikacemi hostovaného na GitHubu lze šablony pro vlastní aplikace ukládat do repozitářů Git a zpřístupňovat je ostatním uživatelům.

Základní komponenty architektury Panamax lze rozdělit do dvou skupin: lokální klient Panamax a libovolný počet vzdálených cílů nasazení.

Lokální klient Panamax je základní součástí tohoto nástroje Docker. Spouští se na lokálním systému a umožňuje vytvářet složité aplikace založené na kontejnerech. Lokální klient se skládá z následujících komponent:

  • CoreOS: instalace lokálního klienta Panamax vyžaduje jako hostitelský systém distribuci Linux CoreOS, která byla speciálně navržena pro softwarové kontejnery. Klient Panamax se poté spouští jako kontejner Docker v CoreOS. Kromě funkcí Dockeru mají uživatelé přístup k různým funkcím CoreOS. Mezi ně patří mimo jiné Fleet a Journalctl:
  • Fleet: namísto přímé integrace s Dockerem používá klient Panamax ke koordinaci svých kontejnerů správce clusterů Fleet. Fleet je správce clusterů, který řídí démon systém Linux systemd v počítačových clusterech.
  • Journalctl: klient Panamax používá Journalctl k vyžádání logových zpráv od správce systému Linux systemd z deníku.
  • Lokální instalační program klienta: lokální instalační program klienta obsahuje všechny komponenty potřebné k instalaci klienta Panamax na lokální systém.
  • Místní agent Panamax: ústřední součástí místního klienta je místní agent. Ten je propojen s různými dalšími komponentami a závislostmi prostřednictvím rozhraní API Panamax. Patří mezi ně místní hostitel Docker, uživatelské rozhraní Panamax, externí registry a vzdálení agenti cílů nasazení v clusteru. Místní agent komunikuje s následujícími programovými rozhraními v místním systému prostřednictvím rozhraní API Panamax za účelem výměny informací o spuštěných aplikacích:
  • Vzdálené API Docker: Panamax vyhledává obrazy v lokálním systému prostřednictvím vzdáleného API Docker a získává informace o spuštěných kontejnerech.
  • etcd API: soubory jsou přenášeny do démona CoreOS Fleet prostřednictvím etcd API.
  • systemd-journal-gatewayd.services: Panamax získává výstup deníku spuštěných služeb prostřednictvím systemd-journal-gatewayd.services.

Kromě toho rozhraní Panamax API také umožňuje interakci s různými externími rozhraními API.

  • API registru Docker: Panamax získává tagy obrazů z registru Docker prostřednictvím API registru Docker.
  • GitHub API: Panamax načítá šablony z úložiště GitHub pomocí GitHub API.
  • KissMetrics API: KissMetrics API shromažďuje data o šablonách, které uživatelé spouštějí.
  • Panamax UI: Panamax UI funguje jako uživatelské rozhraní v lokálním systému a umožňuje uživatelům ovládat nástroj Docker prostřednictvím grafického rozhraní. Uživatelské vstupy jsou přímo předávány lokálnímu agentovi prostřednictvím Panamax API. Panamax UI je založeno na CTL Base UI Kit, knihovně komponent uživatelského rozhraní pro webové projekty od CenturyLink.

V terminologii Panamax se každý uzel v clusteru Docker bez správních úkolů označuje jako vzdálený cíl nasazení. Cíle nasazení se skládají z hostitele Docker, který je nakonfigurován tak, aby nasazoval šablony Panamax pomocí následujících komponent:

  • Instalační program cílového nasazení: instalační program cílového nasazení spustí hostitele Docker, doplněný o vzdáleného agenta Panamax a orchestrační adaptér.
  • Vzdálený agent Panamax: pokud je nainstalován vzdálený agent Panamax, lze aplikace distribuovat přes lokálního klienta Panamax do libovolného požadovaného koncového bodu v clusteru. Vzdálený agent Panamax běží jako kontejner Docker na každém cíli nasazení v clusteru.
  • Orchestrační adaptér Panamax: v orchestračním adaptéru je programová logika poskytována pro každý orchestrační nástroj dostupný pro Panamax v nezávislé vrstvě adaptéru. Díky tomu mají uživatelé možnost vždy zvolit přesně tu orchestrační technologii, kterou podporuje jejich cílové prostředí. Předkonfigurované adaptéry zahrnují Kubernetes a Fleet:
  • Adaptér Panamax Kubernetes: v kombinaci se vzdáleným agentem Panamax umožňuje adaptér Panamax Kubernetes distribuci šablon Panamax v klastrech Kubernetes.
  • Adaptér Panamax Fleet: v kombinaci se vzdáleným agentem Panamax umožňuje adaptér Panamax Fleet distribuci šablon Panamax v klastrech řízených pomocí správce klastrů Fleet.

Následující grafika znázorňuje vzájemné působení jednotlivých komponent Panamax v clusteru Docker:

Obrázek: Schematic representation of the software architecture for the Panamax container management tool
The software architecture of the Panamax container management tool

Nástroj pro správu kontejnerů Panamax založený na CoreOS poskytuje uživatelům řadu standardních technologií pro orchestraci kontejnerů prostřednictvím grafického uživatelského rozhraní, stejně jako možnost pohodlně spravovat složité aplikace s více kontejnery v clusterových architekturách pomocí jakéhokoli systému (např. vlastního notebooku).

Díky veřejnému úložišti šablon Panamax mají uživatelé Panamax přístup k veřejné knihovně šablon s různými zdroji prostřednictvím GitHubu.

Dron

Drone je štíhlá platforma pro kontinuální integraci s minimálními požadavky. S tímto nástrojem Docker můžete automaticky načíst nejnovější sestavení z repozitáře Git, jako je GitHub, a otestovat jej v izolovaných kontejnerech Docker. Můžete spustit libovolnou sadu testů a odesílat zprávy a stavové zprávy e-mailem. Pro každý test softwaru se vytvoří nový kontejner založený na obrazech z veřejného registru Docker. To znamená, že jako prostředí pro testování kódu lze použít jakýkoli veřejně dostupný obraz Docker.

Drone je integrován do Dockeru a podporován různými programovacími jazyky, jako jsou PHP, Node.js, Ruby, Go a Python. Jedinou skutečnou závislostí je kontejnerová platforma. S Drone můžete vytvořit svou vlastní platformu pro kontinuální integraci na jakémkoli systému, na který lze nainstalovat Docker. Drone podporuje různé repozitáře pro správu verzí a návod pro standardní instalaci s integrací GitHubu najdete na webových stránkách open source projektu pod readme.drone.io.

Správa platformy pro kontinuální integraci probíhá prostřednictvím webového rozhraní. Zde můžete načíst softwarové sestavení z libovolného repozitáře Git, sloučit je do aplikací a spustit výsledek v předem definovaném testovacím prostředí. K tomu slouží soubor .drone.yml, který určuje, jak vytvořit a spustit aplikaci pro každý softwarový test.

Uživatelům dronů je k dispozici open-source řešení CI, které kombinuje přednosti alternativních produktů, jako jsou Travis a Jenkins, do uživatelsky přívětivé aplikace.

OpenStack

Pokud jde o budování a provozování open-source cloudových struktur, je open-source cloudový operační systém OpenStack softwarovým řešením první volby.

S OpenStackem můžete spravovat počítačové, úložné a síťové zdroje z centrálního ovládacího panelu a zpřístupnit je koncovým uživatelům prostřednictvím webového rozhraní.

Cloudový operační systém je založen na modulární architektuře, která se skládá z několika komponent:

  • Zun (kontejnerová služba): Zun je kontejnerová služba OpenStacku, která umožňuje snadné nasazení a správu kontejnerových aplikací v cloudu OpenStack. Účelem Zun je umožnit uživatelům spravovat kontejnery prostřednictvím REST API, aniž by museli spravovat servery nebo clustery. K provozu Zun budete potřebovat tři další služby OpenStack, a to Keystone, Neutorn a kryr-libnetwork. Funkčnost Zun lze také rozšířit pomocí dalších služeb OpenStack, jako jsou Cinder a Glance.
  • Neutron (síťová komponenta): Neutron (dříve Quantum) je přenositelná, škálovatelná systémová komponenta podporovaná API, která se používá pro řízení sítě. Modul poskytuje rozhraní pro složité síťové topologie a podporuje různé pluginy, pomocí kterých lze integrovat rozšířené síťové funkce.
  • kuryr-libnetwork (ovladač Docker): kuryr-libnetwork je ovladač, který funguje jako rozhraní mezi Dockerem a Neutronem.
  • Cinder (blokové úložiště): Cinder je přezdívka komponenty v architektuře OpenStack, která poskytuje trvalé blokové úložiště pro provoz virtuálních strojů. Modul poskytuje virtuální úložiště prostřednictvím samoobslužného API. Díky tomu mohou koncoví uživatelé využívat úložné zdroje, aniž by věděli, které zařízení úložiště poskytuje.
  • Keystone (identifikační služba): Keystone poskytuje uživatelům OpenStack centrální identifikační službu. Modul funguje jako systém autentizace a oprávnění mezi jednotlivými komponentami OpenStack. Přístup k projektům v cloudu je regulován nájemci. Každý nájemce představuje uživatele a lze definovat několik přístupů uživatelů s různými právy.
  • Glance (služba obrazů): s modulem Glance poskytuje OpenStack službu, která umožňuje ukládání a načítání obrazů virtuálních strojů.

Více informací o komponentách a službách OpenStack najdete v našem článku o OpenStack.

Kromě výše uvedených komponent lze architekturu OpenStack rozšířit pomocí různých modulů. Informace o různých volitelných modulech najdete na webových stránkách OpenStack.

D2iQ DC/OS

DC/OS (Distributed Cloud Operating System) je open-source software pro provoz distribuovaných systémů vyvinutý společností D2iQ Inc. (dříve Mesosphere). Projekt je založen na open-source clusterovém manažeru Apache Mesos a je operačním systémem pro datová centra. Zdrojový kód je uživatelům k dispozici pod licencí Apache verze 2 v repozitářích DC/OS na GitHubu. Enterprise verze softwaru je k dispozici také na d2iq.com. Rozsáhlá dokumentace k projektu je k dispozici na dcos.io.

DC/OS si můžete představit jako distribuci Mesos, která vám poskytuje všechny funkce správce clusteru (prostřednictvím centrálního uživatelského rozhraní) a výrazně rozšiřuje možnosti Mesos.

DC/OS využívá distribuované jádro platformy Mesos. To umožňuje sdružovat zdroje celého datového centra a spravovat je ve formě agregovaného systému jako jeden logický server. Tímto způsobem můžete ovládat celé clustery fyzických nebo virtuálních strojů stejně snadno, jako byste ovládali jeden počítač.

Tento software zjednodušuje instalaci a správu distribuovaných aplikací a automatizuje úkoly, jako je správa zdrojů, plánování a komunikace mezi procesy. Správa clusteru založeného na D2iQ DC/OS a služeb, které obsahuje, probíhá prostřednictvím centrálního příkazového řádku (CLI) nebo webového rozhraní (GUI).

DC/OS izoluje zdroje clusteru a poskytuje sdílené služby, jako je vyhledávání služeb nebo správa balíčků. Základní komponenty softwaru běží v chráněné oblasti – jádru systému. To zahrnuje programy master a agent platformy Mesos, které jsou zodpovědné za alokaci zdrojů, izolaci procesů a bezpečnostní funkce.

  • Mesos master: Mesos master je hlavní proces, který běží na hlavním uzlu. Účelem Mesos master je řídit správu zdrojů a koordinovat úkoly (abstraktní pracovní jednotky), které jsou prováděny na uzlu agenta. Za tímto účelem Mesos master distribuuje zdroje registrovaným službám DC/OS a přijímá zprávy o zdrojích od agentů Mesos.
  • Mesos agents: Mesos agents jsou procesy, které běží na agent účtech a jsou zodpovědné za provádění úkolů distribuovaných masterem. Mesos agents dodávají pravidelné zprávy o dostupných zdrojích v clusteru Mesos masterovi. Ty jsou předávány Mesos masterem plánovači (tj. Marathon, Chronos nebo Cassandra). Ten rozhoduje, který úkol se spustí na kterém uzlu. Úkoly jsou pak prováděny v kontejneru izolovaným způsobem.

Všechny ostatní systémové komponenty i aplikace spouštěné agenty Mesos prostřednictvím executoru běží v uživatelském prostoru. Základními komponentami standardní instalace DC/OS jsou admin router, Mesos DNS, distribuovaný DNS proxy, load balancer Minuteman, scheduler Marathon, Apache ZooKeeper a Exhibitor.

  • Admin router: admin router je speciálně nakonfigurovaný webový server založený na NGINX, který poskytuje služby DC/OS a také centrální autentizační a proxy funkce.
  • Mesos DNS: systémová komponenta Mesos DNS poskytuje funkce vyhledávání služeb, které umožňují jednotlivým službám a aplikacím v clusteru vzájemně se identifikovat prostřednictvím centrálního systému doménových jmen (DNS).
  • Distribuovaný DNS proxy: distribuovaný DNS proxy je interní DNS dispečer.
  • Minuteman: systémová komponenta Minuteman funguje jako interní vyvažovač zátěže, který pracuje na transportní vrstvě (vrstva 4) referenčního modelu OSI.
  • DC/OS Marathon: Marathon je centrální komponentou platformy Mesos, která v D2iQ DC/OS funguje jako systém init (podobný systemd). Marathon spouští a dohlíží na služby a aplikace DC/OS v clusterových prostředích. Kromě toho software poskytuje funkce vysoké dostupnosti, vyhledávání služeb, vyvažování zátěže, kontroly stavu a grafické webové rozhraní.
  • Apache ZooKeeper: Apache ZooKeeper je open source softwarová komponenta, která poskytuje koordinační funkce pro provoz a řízení aplikací v distribuovaných systémech. ZooKeeper se v D2iQ DC/OS používá pro koordinaci všech nainstalovaných systémových služeb.
  • Exhibitor: Exhibitor je systémová komponenta, která se automaticky instaluje a konfiguruje se ZooKeeperem na každém hlavním uzlu. Exhibitor také poskytuje grafické uživatelské rozhraní pro uživatele ZooKeeperu.

Na clusterových zdrojích agregovaných prostřednictvím DC/OS lze současně provádět různé úlohy. To například umožňuje paralelní provoz na clusterovém operačním systému systémů velkých dat, mikroslužeb nebo kontejnerových platforem, jako jsou Hadoop, Spark a Docker.

V rámci D2iQ Universe je k dispozici veřejný katalog aplikací pro DC/OS. Díky tomu můžete instalovat aplikace jako Spark, Cassandra, Chronos, Jenkins nebo Kafka pouhým kliknutím na grafické uživatelské rozhraní.

Jaké nástroje Dockeru existují pro zabezpečení?

I když zapouzdřené procesy běžící v kontejnerech sdílejí stejné jádro, Docker používá řadu technik k jejich vzájemné izolaci. K tomu se obvykle používají základní funkce jádra Linuxu, jako jsou Cgroups a Namespaces.

Kontejnery však stále nenabízejí stejnou úroveň izolace, jaké lze dosáhnout pomocí virtuálních strojů. Navzdory použití izolačních technik lze prostřednictvím kontejnerů přistupovat k důležitým základním subsystémům, jako jsou Cgroups, stejně jako k rozhraním jádra v adresářích /sys a /proc.

Vývojový tým Dockeru uznal, že tyto bezpečnostní obavy představují překážku pro zavedení kontejnerové technologie do produkčních systémů. Kromě základních izolačních technik jádra Linuxu podporují novější verze Docker Engine také frameworky AppArmor, SELinux a Seccomp, které fungují jako druh firewallu pro základní zdroje.

  • AppArmor: pomocí AppArmor jsou regulována přístupová práva kontejnerů k souborovým systémům.
  • SELinux: SELinux poskytuje komplexní regulační systém, ve kterém lze implementovat řízení přístupu k základním zdrojům.
  • Seccomp: Seccomp (Secure Computing Mode) dohlíží na vyvolávání systémových volání.

Kromě těchto nástrojů Docker využívá také funkce systému Linux k omezení oprávnění root, se kterými Docker Engine spouští kontejnery.

Další bezpečnostní rizika souvisejí se zranitelností softwaru v rámci aplikačních komponent distribuovaných registrem Docker. Vzhledem k tomu, že v zásadě kdokoli může vytvářet obrazy Docker a zpřístupňovat je komunitě v Docker Hub, existuje riziko, že při stahování obrazu dojde k zavlečení škodlivého kódu do vašeho systému. Před nasazením aplikace by se uživatelé Docker měli ujistit, že veškerý kód poskytovaný v obraze pro spouštění kontejnerů pochází z důvěryhodného zdroje.

Docker nabízí ověřovací program, který mohou poskytovatelé softwaru využít k kontrole a ověření svých obrazů Docker. Pomocí tohoto ověřovacího programu chce Docker vývojářům usnadnit vytváření softwarových dodavatelských řetězců, které jsou pro jejich projekty bezpečné. Kromě zvýšení bezpečnosti pro uživatele má program za cíl nabídnout vývojářům softwaru způsob, jak odlišit jejich projekty od množství dalších dostupných zdrojů. Ověřené obrazy jsou označeny odznakem „Ověřený vydavatel“ a kromě dalších výhod získávají vyšší hodnocení ve výsledcích vyhledávání Docker Hub.

Přejít do hlavního menu