Ecosistemul complet Docker oferă dezvoltatorilor o serie de posibilități pentru implementarea aplicațiilor, coordonarea containerelor și multe altele. Vom trece în revistă cele mai importante instrumente Docker și vă vom oferi o prezentare generală a celor mai populare proiecte terțe care dezvoltă instrumente Docker open-source.

Care sunt instrumentele/componentele esențiale ale Docker?

Astăzi, Docker este mult mai mult decât o platformă sofisticată pentru gestionarea containerelor software. Dezvoltatorii au creat o gamă diversă de instrumente Docker pentru a face implementarea aplicațiilor prin infrastructura distribuită și mediile cloud mai ușoară, mai rapidă și mai flexibilă. Pe lângă instrumentele pentru clustering și orchestrare, există și o piață centrală de aplicații și un instrument pentru gestionarea resurselor cloud.

Motorul Docker

Când dezvoltatorii spun „Docker”, se referă de obicei la aplicația client-serveropen-source carestă la baza platformei container. Această aplicație este denumită Docker Engine. Componentele centrale ale Docker Engine sunt daemonul Docker, o API REST și o CLI (interfață de linie de comandă) care servește ca interfață de utilizator.

Cu acest design, puteți comunica cu Docker Engine prin comenzi din linia de comandă și puteți gestiona imagini Docker, fișiere Docker și containere Docker în mod convenabil din terminal.

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

Puteți găsi o descriere detaliată a Docker Engine în tutorialul nostru Docker pentru începători Tutorial Docker: instalare și primii pași.

Docker Hub

Docker Hub oferă utilizatorilor un registru bazat pe cloud care permite descărcarea imaginilor Docker, gestionarea centralizată și partajarea acestora cu alți utilizatori Docker. Utilizatorii înregistrați pot stoca imagini Docker în mod public sau în depozite private. Descărcarea unei imagini publice (cunoscută sub denumirea de „pulling” în terminologia Docker) nu necesită un cont de utilizator. Un mecanism integrat de etichetare permite versiunea imaginilor.

Pe lângă depozitele publice ale altor utilizatori Docker, există și multe resurse de la echipa de dezvoltatori Docker și proiecte open-source bine-cunoscute, care pot fi găsite în depozitele oficiale din Docker Hub. Cele mai populare imagini Docker includ serverul web NGINX, baza de date în memorie Redis, setul de instrumente BusyBox Unix și distribuția Ubuntu Linux.

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

Organizațiile sunt o altă caracteristică importantă a Docker Hub, care permite utilizatorilor Docker să creeze depozite private disponibile exclusiv unui grup select de persoane. Drepturile de acces sunt gestionate în cadrul unei organizații folosind echipe și apartenența la grupuri.

Docker Swarm

Docker Engine conține o funcție nativă care permite utilizatorilor să gestioneze gazdele Docker în clustere numite swarms. Capacitățile de gestionare și orchestrare a clusterelor integrate în motorul Docker se bazează pe setul de instrumente Swarmkit. Dacă utilizați o versiune mai veche a platformei de containere, instrumentul Docker este disponibil ca aplicație independentă.

Ca instrument nativ de clustering Docker, Swarm adună un grup de gazde Docker într-o singură gazdă virtuală și servește API-ul REST Docker. Orice instrument Docker asociat cu daemonul Docker poate accesa Swarm și se poate scala pe orice număr de gazde Docker. Cu Docker Engine CLI, utilizatorii pot crea swarm-uri, distribui aplicații în cluster și gestiona comportamentul swarm-ului fără a fi nevoie să utilizeze software de orchestrare suplimentar.

Motoarele Docker care au fost combinate în clustere rulează în modul swarm. Selectați această opțiune dacă doriți să creați un nou cluster sau să adăugați un host Docker la un swarm existent. Hosturile Docker individuale dintr-un cluster sunt denumite „noduri”. Nodurile unui cluster pot rula ca hosturi virtuale pe același sistem local, dar mai des se utilizează un design bazat pe cloud, în care nodurile individuale ale swarmului Docker sunt distribuite pe diferite sisteme și infrastructuri.

Software-ul se bazează pe o arhitectură master-worker. Atunci când sarcinile trebuie distribuite în swarm, utilizatorii transmit un serviciu către nodul manager. Managerul este apoi responsabil pentru programarea containerelor în cluster și servește ca interfață principală de utilizator pentru accesarea resurselor swarm.

Nodul manager trimite unități individuale, cunoscute sub numele de sarcini, către nodurile de lucru.

  • Servicii: serviciile sunt structuri centrale în clusterele Docker. Un serviciu definește o sarcină care trebuie executată într-un cluster Docker. Un serviciu se referă la un grup de containere care se bazează pe aceeași imagine. La crearea unui serviciu, utilizatorul specifică ce imagine și comenzi sunt utilizate. În plus, serviciile oferă posibilitatea de a scala aplicațiile. Utilizatorii platformei Docker definesc pur și simplu câte containere trebuie pornite pentru un serviciu.
  • Sarcini: pentru a distribui serviciile în cluster, acestea sunt împărțite în unități de lucru individuale (sarcini) de către nodul manager. Fiecare sarcină include un container Docker, precum și comenzile care sunt executate în acesta.

Pe lângă gestionarea controlului clusterului și orchestrarea containerelor, nodurile manager pot îndeplini în mod implicit și funcțiile nodurilor worker, cu excepția cazului în care restricționați strict sarcinile acestor noduri la gestionare.

Un program agent rulează pe fiecare nod de lucru. Acesta acceptă sarcini și furnizează rapoarte de stare ale nodului principal cu privire la progresul sarcinii transferate. Graficul următor prezintă o reprezentare schematică a unui Docker Swarm:

Imagine: Schematic representation of a Docker Swarm
The manager-worker architecture of a Docker Swarm

Atunci când implementează un Docker Swarm, utilizatorii se bazează, în general, pe mașina Docker.

Docker Compose

Docker Compose permite combinarea mai multor containere și executarea acestora cu o singură comandă. Elementul de bază al Compose este fișierul de control central bazat pe limbajul premiat YAML. Sintaxa acestui fișier Compose este similară cu cea a software-ului open-source Vagrant, care este utilizat la crearea și aprovizionarea mașinilor virtuale.

În fișierul docker-compose.yml, puteți defini orice număr de containere software, inclusiv toate dependențele, precum și relațiile dintre acestea. Astfel de aplicații multi-container sunt controlate după același model ca și containerele software individuale. Utilizați comandadocker-compose în combinație cu subcomanda dorită pentru a gestiona întregul ciclu de viață al aplicației.

Acest instrument Docker poate fi integrat cu ușurință într-un cluster bazat pe Swarm. Astfel, puteți rula aplicații multi-container create cu Compose pe sisteme distribuite la fel de ușor ca pe un singur host Docker.

O altă caracteristică a Docker Compose este un mecanism integrat de scalare. Cu ajutorul instrumentului de orchestrare, puteți utiliza confortabil programul de linie de comandă pentru a defini câte containere doriți să porniți pentru un anumit serviciu.

Ce instrumente Docker de la terți există?

Pe lângă dezvoltarea internă a Docker Inc., există diverse instrumente software și platforme de la furnizori externi care oferă interfețe pentru Docker Engine sau care au fost dezvoltate special pentru populara platformă de containere. În cadrul ecosistemului Docker, printre cele mai populare proiecte open-source se numără instrumentul de orchestrare Kubernetes, instrumentul de gestionare a clusterelor Shipyard, soluția de transport multi-container Panamax, platforma de integrare continuă Drone, sistemul de operare bazat pe cloud OpenStack și sistemul de operare pentru centre de date D2iQ DC/OS, care se bazează pe managerul de cluster Mesos.

Kubernetes

Nu este întotdeauna posibil ca Docker să vină cu propriile instrumente de orchestrare, precum Swarm și Compose. Din acest motiv, diverse companii investesc de ani buni în propriile proiecte de dezvoltare pentru a crea instrumente personalizate, concepute pentru a facilita funcționarea platformei de containere în infrastructuri mari și distribuite. Printre cele mai populare soluții de acest tip se numără proiectul open-source Kubernetes.

Kubernetes este un manager de cluster pentru aplicații bazate pe containere. Scopul Kubernetes este automatizarea aplicațiilor într-un cluster. Pentru a face acest lucru, instrumentul de orchestrare utilizează o API REST, un program de linie de comandă și o interfață web grafică ca interfețe de control. Cu aceste interfețe, se pot iniția automatizări și se pot solicita rapoarte de stare. Puteți utiliza Kubernetes pentru:

  • executa fotografii bazate pe containere pe un cluster,
  • instala și gestiona aplicații în sisteme distribuite,
  • scalarea aplicațiilor și
  • utiliza hardware-ul în cel mai bun mod posibil.

În acest scop, Kubernetes combină containerele în părți logice, denumite poduri. Podurile reprezintă unitățile de bază ale managerului de cluster, care pot fi distribuite în cluster prin programare.

La fel ca Docker Swarm, Kubernetes se bazează, de asemenea, pe o arhitectură master-worker. Un cluster este compus dintr-un master Kubernetes și o varietate de lucrători, care sunt numiți și noduri Kubernetes (sau minioni). Masterul Kubernetes funcționează ca un plan de control central în cluster și este alcătuit din patru componente de bază, permițând comunicarea directă în cluster și distribuirea sarcinilor. Un master Kubernetes constă dintr-un server API, memoria de configurare etcd, un programator și un manager de control.

  • Server API: toate automatizările din clusterul Kubernetes sunt inițiate cu REST-API prin intermediul unui server API. Acesta funcționează ca interfață centrală de administrare în cluster.
  • etcd: puteți considera memoria de configurare open-source etcd ca fiind memoria unui cluster Kubernetes. Key Value Store, dezvoltat de CoreOS special pentru sisteme distribuite, stochează datele de configurare și le pune la dispoziția fiecărui nod din cluster. Starea actuală a unui cluster poate fi gestionată în orice moment prin etcd.
  • Scheduler: schedulerul este responsabil pentru distribuirea grupurilor de containere (poduri) în cluster. Acesta determină cerințele de resurse ale unui pod și apoi le potrivește cu resursele disponibile ale nodurilor individuale din cluster.
  • Managerul controlerului: managerul controlerului este un serviciu al masterului Kubernetes și controlează orchestrarea prin reglarea stării clusterului și efectuarea sarcinilor de rutină. Sarcina principală a managerului controlerului este de a se asigura că starea clusterului corespunde stării țintă definite.

Componentele generale ale masterului Kubernetes pot fi localizate pe același host sau distribuite pe mai multe hosturi master într-un cluster cu disponibilitate ridicată.

În timp ce masterul Kubernetes este responsabil pentru orchestrare, podurile distribuite în cluster sunt rulate pe gazde, noduri Kubernetes, care sunt subordonate masterului. Pentru a face acest lucru, un motor de containere trebuie să ruleze pe fiecare nod Kubernetes. Deși Docker este standardul de facto, Kubernetes nu trebuie să utilizeze un motor de containere specific.

În plus față de motorul containerului, nodurile Kubernetes acoperă următoarele componente:

  • kubelet: kubelet este un agent care rulează pe fiecare nod Kubernetes și este utilizat pentru a controla și gestiona nodul. Ca punct central de contact al fiecărui nod, kubelet este conectat la masterul Kubernetes și se asigură că informațiile sunt transmise și primite de la planul de control.
  • kube-proxy: în plus, serviciul proxy kube-proxy rulează pe fiecare nod Kubernetes. Acest lucru asigură că solicitările din exterior sunt redirecționate către containerele respective și oferă servicii utilizatorilor de aplicații bazate pe containere. Kube-proxy oferă, de asemenea, echilibrare rudimentară a sarcinii.

Graficul următor prezintă o reprezentare schematică a arhitecturii nodului principal pe care se bazează platforma de orchestrare Kubernetes:

Imagine: Schematic representation of the Kubernetes architecture
The master-node architecture of the orchestration platform Kubernetes

Pe lângă proiectul principal Kubernetes, există și numeroase instrumente și extensii care permit adăugarea de funcționalități suplimentare platformei de orchestrare. Cele mai populare sunt instrumentele de monitorizare și diagnosticare a erorilor Prometheus, Weave Scope și sysdig, precum și managerul de pachete Helm. Există, de asemenea, pluginuri pentru Apache Maven și Gradle, precum și o API Java, care vă permite să controlați Kubernetes de la distanță.

Șantier naval

Shipyard este o soluție de gestionare dezvoltată de comunitate, bazată pe Swarm, care permite utilizatorilor să mențină resurse Docker precum containere, imagini, gazde și registre private prin intermediul unei interfețe grafice de utilizator. Este disponibilă ca aplicație web prin intermediul browserului. În plus față de funcțiile de gestionare a clusterului care pot fi accesate printr-o interfață web centrală, Shipyard oferă și autentificarea utilizatorilor și controlul accesului bazat pe roluri.

Software-ul este 100% compatibil cu API-ul la distanță Docker și utilizează baza de date open-source NoSQL RethinkDB pentru a stoca date pentru conturile utilizatorilor, adresele și evenimentele. Software-ul se bazează pe setul de instrumente de gestionare a clusterelor Citadel și este alcătuit din trei componente principale: controler, API și UI.

  • Controlerul Shipyard: controlerul este componenta centrală a instrumentului de gestionare Shipyard. Controlerul Shipyard interacționează cu RethinkDB pentru a stoca date și permite adresarea gazdelor individuale dintr-un cluster Docker și controlul evenimentelor.
  • API Shipyard: API Shipyard se bazează pe REST. Toate funcțiile instrumentului de gestionare sunt controlate prin API Shipyard.
  • Interfața utilizatorului Shipyard (UI): interfața utilizatorului Shipyard este o aplicație AngularJS, care oferă utilizatorilor o interfață grafică pentru gestionarea clusterelor Docker în browserul web. Toate interacțiunile din interfața utilizatorului au loc prin intermediul API-ului Shipyard.

Mai multe informații despre proiectul open-source pot fi găsite pe site-ul oficial al Shipyard.

Panamax

Dezvoltatorii proiectului de software open-source Panamax își propun să simplifice implementarea aplicațiilor multi-container. Instrumentul gratuit oferă utilizatorilor o interfață grafică care permite dezvoltarea, implementarea și distribuirea convenabilă a aplicațiilor complexe bazate pe containere Docker, folosind funcția drag-and-drop.

Panamax permite salvarea aplicațiilor complexe multi-container ca șabloane de aplicații și distribuirea acestora în arhitecturi cluster cu un singur clic. Folosind o piață de aplicații integrată găzduită pe GitHub, șabloanele pentru aplicațiile create de utilizatori pot fi stocate în depozite Git și puse la dispoziția altor utilizatori.

Componentele de bază ale arhitecturii Panamax pot fi împărțite în două grupuri: clientul local Panamax și orice număr de ținte de implementare la distanță.

Clientul local Panamax este componenta principală a acestui instrument Docker. Acesta este executat pe sistemul local și permite crearea de aplicații complexe bazate pe containere. Clientul local este alcătuit din următoarele componente:

  • CoreOS: instalarea clientului local Panamax necesită distribuția Linux CoreOS ca sistem gazdă, care a fost special concepută pentru containere software. Clientul Panamax este apoi rulat ca un container Docker în CoreOS. În plus față de funcțiile Docker, utilizatorii au acces la diverse funcții CoreOS. Acestea includ, printre altele, Fleet și Journalctl:
  • Fleet: în loc să se integreze direct cu Docker, clientul Panamax utilizează managerul de cluster Fleet pentru a-și orchestra containerele. Fleet este un manager de cluster care controlează sistemul daemon Linux systemd în clusterele de calculatoare.
  • Journalctl: clientul Panamax utilizează Journalctl pentru a solicita mesaje de jurnal de la managerul de sistem Linux systemd din jurnal.
  • Instalator client local: instalatorul client local conține toate componentele necesare pentru instalarea clientului Panamax pe un sistem local.
  • Agent local Panamax: componenta centrală a clientului local este agentul local. Acesta este conectat la diverse alte componente și dependențe prin intermediul API-ului Panamax. Acestea includ gazda Docker locală, interfața utilizatorului Panamax, registrele externe și agenții la distanță ai țintelor de implementare din cluster. Agentul local interacționează cu următoarele interfețe de program de pe sistemul local prin intermediul API-ului Panamax pentru a schimba informații despre aplicațiile care rulează:
  • API-ul la distanță Docker: Panamax caută imagini pe sistemul local prin intermediul API-ului la distanță Docker și obține informații despre containerele care rulează.
  • API etcd: fișierele sunt transmise către daemonul CoreOS Fleet prin intermediul API etcd.
  • systemd-journal-gatewayd.services: Panamax obține jurnalul serviciilor care rulează prin intermediul systemd-journal-gatewayd.services.

În plus, API-ul Panamax permite și interacțiuni cu diverse API-uri externe.

  • API-ul registrului Docker: Panamax obține etichete de imagine din registrul Docker prin intermediul API-ului registrului Docker.
  • API GitHub: Panamax încarcă șabloane din depozitul GitHub utilizând API-ul GitHub.
  • API KissMetrics: API-ul KissMetrics colectează date despre șabloanele pe care le execută utilizatorii.
  • Interfața utilizatorului Panamax: interfața utilizatorului Panamax funcționează ca o interfață utilizator pe sistemul local și permite utilizatorilor să controleze instrumentul Docker prin intermediul unei interfețe grafice. Datele introduse de utilizator sunt transmise direct agentului local prin intermediul API-ului Panamax. Interfața utilizatorului Panamax se bazează pe CTL Base UI Kit, o bibliotecă de componente UI pentru proiecte web de la CenturyLink.

În terminologia Panamax, fiecare nod dintr-un cluster Docker fără sarcini de gestionare este denumit țintă de implementare la distanță. Țintele de implementare constau dintr-un gazdă Docker, care este configurată pentru a implementa șabloane Panamax cu ajutorul următoarelor componente:

  • Instalator țintă de implementare: instalatorul țintă de implementare pornește un host Docker, complet cu un agent la distanță Panamax și un adaptor de orchestrare.
  • Agentul la distanță Panamax: dacă este instalat un agent la distanță Panamax, aplicațiile pot fi distribuite prin clientul local Panamax către orice punct final dorit din cluster. Agentul la distanță Panamax rulează ca un container Docker pe fiecare țintă de implementare din cluster.
  • Adaptor de orchestrare Panamax: în adaptorul de orchestrare, logica programului este furnizată pentru fiecare instrument de orchestrare disponibil pentru Panamax într-un strat adaptor independent. Din acest motiv, utilizatorii au opțiunea de a alege întotdeauna tehnologia de orchestrare exactă care va fi acceptată de mediul lor țintă. Adaptoarele preconfigurate includ Kubernetes și Fleet:
  • Adaptor Panamax Kubernetes: în combinație cu agentul la distanță Panamax, adaptorul Panamax Kubernetes permite distribuirea șabloanelor Panamax în clusterele Kubernetes.
  • Adaptorul Panamax Fleet: în combinație cu agentul la distanță Panamax, adaptorul Panamax Fleet permite distribuirea șabloanelor Panamax în clustere controlate cu ajutorul managerului de cluster Fleet.

Graficul următor ilustrează interacțiunea dintre componentele individuale Panamax într-un cluster Docker:

Imagine: Schematic representation of the software architecture for the Panamax container management tool
The software architecture of the Panamax container management tool

Instrumentul de gestionare a containerelor Panamax bazat pe CoreOS oferă utilizatorilor o varietate de tehnologii standard de orchestrare a containerelor printr-o interfață grafică, precum și opțiunea de a gestiona în mod convenabil aplicații complexe cu mai multe containere în arhitecturi de cluster utilizând orice sistem (de exemplu, propriul laptop).

Cu ajutorul depozitului public de șabloane Panamax, utilizatorii Panamax au acces la o bibliotecă publică de șabloane cu diverse resurse prin GitHub.

Dronă

Drone este o platformă de integrare continuă simplă, cu cerințe minime. Cu acest instrument Docker, puteți încărca automat cea mai nouă versiune din depozitul Git, cum ar fi GitHub, și o puteți testa în containere Docker izolate. Puteți rula orice suită de teste și puteți trimite rapoarte și mesaje de stare prin e-mail. Pentru fiecare test de software, se creează un nou container bazat pe imagini din registrul public Docker. Acest lucru înseamnă că orice imagine Docker disponibilă public poate fi utilizată ca mediu pentru testarea codului.

Drone este integrat în Docker și acceptat de diverse limbaje de programare, precum PHP, Node.js, Ruby, Go și Python. Platforma container este singura dependență reală. Puteți crea propria platformă personală de integrare continuă cu Drone pe orice sistem pe care poate fi instalat Docker. Drone acceptă diverse depozite de control al versiunilor, iar pe site-ul web al proiectului open source, la readme.drone.io, puteți găsi un ghid pentru instalarea standard cu integrare GitHub.

Gestionarea platformei de integrare continuă se realizează prin intermediul unei interfețe web. Aici puteți încărca versiuni de software din orice depozit Git, le puteți combina în aplicații și puteți rula rezultatul într-un mediu de testare predefinit. Pentru a face acest lucru, se definește un fișier .drone.yml care specifică modul de creare și rulare a aplicației pentru fiecare test de software.

Utilizatorii de drone beneficiază de o soluție CI open-source care combină punctele forte ale produselor alternative, precum Travis și Jenkins, într-o aplicație ușor de utilizat.

OpenStack

Când vine vorba de construirea și operarea structurilor cloud open-source, sistemul de operare cloud open-source OpenStack este soluția software preferată.

Cu OpenStack puteți gestiona resursele de calcul, stocare și rețea dintr-un panou de control central și le puteți pune la dispoziția utilizatorilor finali printr-o interfață web.

Sistemul de operare cloud se bazează pe o arhitectură modulară compusă din mai multe componente:

  • Zun (serviciu de containere): Zun este serviciul de containere al OpenStack și permite implementarea și gestionarea ușoară a aplicațiilor containerizate în cloudul OpenStack. Scopul Zun este de a permite utilizatorilor să gestioneze containerele printr-o API REST fără a fi nevoie să gestioneze servere sau clustere. Pentru a opera Zun, veți avea nevoie de alte trei servicii OpenStack, și anume Keystone, Neutorn și kryr-libnetwork. Funcționalitatea Zun poate fi extinsă și prin servicii OpenStack suplimentare, precum Cinder și Glance.
  • Neutron (componentă de rețea): Neutron (denumit anterior Quantum) este o componentă de sistem portabilă, scalabilă, compatibilă cu API, utilizată pentru controlul rețelei. Modulul oferă o interfață pentru topologii de rețea complexe și acceptă diverse pluginuri prin care pot fi integrate funcții de rețea extinse.
  • kuryr-libnetwork (driver Docker): kuryr-libnetwork este un driver care acționează ca o interfață între Docker și Neutron.
  • Cinder (stocare în bloc): Cinder este numele unei componente din arhitectura OpenStack care oferă stocare persistentă în bloc pentru funcționarea mașinilor virtuale. Modulul oferă stocare virtuală prin intermediul unui API self-service. Prin aceasta, utilizatorii finali pot utiliza resursele de stocare fără a ști care dispozitiv oferă stocarea.
  • Keystone (serviciu de identitate): Keystone oferă utilizatorilor OpenStack un serviciu central de identitate. Modulul funcționează ca un sistem de autentificare și permisiuni între componentele individuale OpenStack. Accesul la proiectele din cloud este reglementat de chiriași. Fiecare chiriaș reprezintă un utilizator și pot fi definite mai multe accesări ale utilizatorilor cu drepturi diferite.
  • Glance (serviciu de imagini): cu modulul Glance, OpenStack oferă un serviciu care permite stocarea și recuperarea imaginilor mașinilor virtuale.

Puteți găsi mai multe informații despre componentele și serviciile OpenStack în articolul nostru despre OpenStack.

În plus față de componentele menționate mai sus, arhitectura OpenStack poate fi extinsă folosind diverse module. Puteți citi despre diferitele module opționale pe site-ul web OpenStack.

D2iQ DC/OS

DC/OS (Distributed Cloud Operating System) este un software open-source pentru operarea sistemelor distribuite dezvoltat de D2iQ Inc. (fosta Mesosphere). Proiectul se bazează pe managerul de cluster open-source Apache Mesos și este un sistem de operare pentru centrele de date. Codul sursă este disponibil utilizatorilor sub licența Apache versiunea 2 în depozitele DC/OS de pe GitHub. O versiune enterprise a software-ului este disponibilă și pe d2iq.com. Documentația detaliată a proiectului poate fi găsită pe dcos.io.

Puteți considera DC/OS ca o distribuție Mesos care vă oferă toate funcționalitățile managerului de cluster (prin intermediul unei interfețe centrale de utilizator) și extinde considerabil Mesos.

DC/OS utilizează nucleul sistemului distribuit al platformei Mesos. Acest lucru face posibilă gruparea resurselor unui întreg centru de date și gestionarea acestora sub forma unui sistem agregat, precum un singur server logic. În acest fel, puteți controla întregi clustere de mașini fizice sau virtuale cu aceeași ușurință cu care ați opera un singur computer.

Software-ul simplifică instalarea și gestionarea aplicațiilor distribuite și automatizează sarcini precum gestionarea resurselor, programarea și comunicarea între procese. Gestionarea unui cluster bazat pe D2iQ DC/OS, precum și a serviciilor incluse în acesta, se realizează printr-un program central de linie de comandă (CLI) sau o interfață web (GUI).

DC/OS izolează resursele clusterului și furnizează servicii partajate, cum ar fi descoperirea serviciilor sau gestionarea pachetelor. Componentele de bază ale software-ului rulează într-o zonă protejată – nucleul central. Acesta include programele master și agent ale platformei Mesos, care sunt responsabile de alocarea resurselor, izolarea proceselor și funcțiile de securitate.

  • Mesos master: Mesos master este un proces master care rulează pe un nod master. Scopul Mesos master este de a controla gestionarea resurselor și de a coordona sarcinile (unități de lucru abstracte) care sunt efectuate pe un nod agent. Pentru a face acest lucru, Mesos master distribuie resurse către serviciile DC/OS înregistrate și acceptă rapoarte de resurse de la agenții Mesos.
  • Agenții Mesos: agenții Mesos sunt procese care rulează pe conturile agenților și sunt responsabili de executarea sarcinilor distribuite de master. Agenții Mesos transmit rapoarte periodice despre resursele disponibile în cluster către Mesos master. Acestea sunt transmise de Mesos master către un programator (adică Marathon, Chronos sau Cassandra). Acesta decide ce sarcină să ruleze pe ce nod. Sarcinile sunt apoi executate într-un container în mod izolat.

Toate celelalte componente ale sistemului, precum și aplicațiile rulate de agenții Mesos prin intermediul executorului, rulează în spațiul utilizatorului. Componentele de bază ale unei instalări DC/OS standard sunt routerul de administrare, Mesos DNS, un proxy DNS distribuit, echilibratorul de sarcină Minuteman, programatorul Marathon, Apache ZooKeeper și Exhibitor.

  • Routerul de administrare: routerul de administrare este un server web special configurat bazat pe NGINX, care furnizează servicii DC/OS, precum și funcții centrale de autentificare și proxy.
  • Mesos DNS: componenta de sistem Mesos DNS oferă funcții de descoperire a serviciilor care permit serviciilor și aplicațiilor individuale din cluster să se identifice reciproc printr-un sistem central de nume de domeniu (DNS).
  • Proxy DNS distribuit: proxy-ul DNS distribuit este un dispecer DNS intern.
  • Minuteman: componenta de sistem Minuteman funcționează ca un echilibrator de sarcină intern care funcționează pe stratul de transport (stratul 4) al modelului de referință OSI.
  • DC/OS Marathon: Marathon este o componentă centrală a platformei Mesos care funcționează în D2iQ DC/OS ca un sistem init (similar cu systemd). Marathon pornește și supraveghează serviciile și aplicațiile DC/OS în medii cluster. În plus, software-ul oferă funcții de disponibilitate ridicată, descoperire de servicii, echilibrare a sarcinii, verificări de stare și o interfață web grafică.
  • Apache ZooKeeper: Apache ZooKeeper este o componentă software open source care oferă funcții de coordonare pentru operarea și controlul aplicațiilor în sisteme distribuite. ZooKeeper este utilizat în D2iQ DC/OS pentru coordonarea tuturor serviciilor de sistem instalate.
  • Exhibitor: Exhibitor este o componentă de sistem care este instalată și configurată automat cu ZooKeeper pe fiecare nod master. Exhibitor oferă, de asemenea, o interfață grafică pentru utilizatorii ZooKeeper.

Diverse sarcini de lucru pot fi executate simultan pe resursele clusterului agregate prin DC/OS. Acest lucru permite, de exemplu, funcționarea în paralel pe sistemul de operare cluster al sistemelor de date mari, microserviciilor sau platformelor de containere, cum ar fi Hadoop, Spark și Docker.

În cadrul D2iQ Universe, este disponibil un catalog public de aplicații pentru DC/OS. Cu ajutorul acestuia, puteți instala aplicații precum Spark, Cassandra, Chronos, Jenkins sau Kafka printr-un simplu clic pe interfața grafică de utilizare.

Ce instrumente Docker există pentru securitate?

Chiar dacă procesele încapsulate care rulează în containere împărtășesc același nucleu, Docker utilizează o serie de tehnici pentru a le izola unele de altele. Pentru aceasta se utilizează de obicei funcțiile de bază ale nucleului Linux, precum Cgroups și Namespaces.

Cu toate acestea, containerele nu oferă încă același grad de izolare care poate fi obținut cu mașinile virtuale. În ciuda utilizării tehnicilor de izolare, subsistemele importante, precum Cgroups, precum și interfețele kernel din directoarele /sys și /proc pot fi accesate prin intermediul containerelor.

Echipa de dezvoltare Docker a recunoscut că aceste probleme de siguranță reprezintă un obstacol pentru implementarea tehnologiei containerelor în sistemele de producție. Pe lângă tehnicile fundamentale de izolare ale kernelului Linux, versiunile mai noi ale Docker Engine acceptă și framework-urile AppArmor, SELinux și Seccomp, care funcționează ca un fel de firewall pentru resursele de bază.

  • AppArmor: cu AppArmor, drepturile de acces ale containerelor la sistemele de fișiere sunt reglementate.
  • SELinux: SELinux oferă un sistem complex de reglementare în care poate fi implementat controlul accesului la resursele de bază.
  • Seccomp: Seccomp (Secure Computing Mode) supraveghează invocarea apelurilor de sistem.

În plus față de aceste instrumente Docker, Docker utilizează și capacitățile Linux pentru a restricționa permisiunile root cu care Docker Engine pornește containerele.

Există și alte probleme de securitate legate de vulnerabilitățile software din componentele aplicațiilor distribuite de registrul Docker. Deoarece, în esență, oricine poate crea imagini Docker și le poate face accesibile publicului în comunitatea Docker Hub, există riscul introducerii de coduri maligne în sistemul dvs. atunci când descărcați o imagine. Înainte de a implementa o aplicație, utilizatorii Docker trebuie să se asigure că tot codul furnizat într-o imagine pentru executarea containerelor provine dintr-o sursă de încredere.

Docker oferă un program de verificare pe care furnizorii de software îl pot utiliza pentru a-și verifica și valida imaginile Docker. Prin acest program de verificare, Docker își propune să faciliteze dezvoltatorilor crearea de lanțuri de aprovizionare cu software sigure pentru proiectele lor. Pe lângă creșterea securității pentru utilizatori, programul își propune să ofere dezvoltatorilor de software o modalitate de a-și diferenția proiectele de multitudinea de alte resurse disponibile. Imaginile verificate sunt marcate cu o insignă „Verified Publisher” (Editor verificat) și, pe lângă alte avantaje, primesc un rang mai înalt în rezultatele căutării Docker Hub.

Mergi la meniul principal