Docker-architectuur: waarom is het belangrijk?



Deze blog bespreekt de docker-architectuur en de verschillende componenten ervan. Het benadrukt de docker-functies die ons de reden voor zijn populariteit vertellen.

Velen van ons geloven dat Docker een integraal onderdeel is van . Dus achter deze ongelooflijke tool moet een geweldige architectuur zijn. In deze blog zal ik alles behandelen wat je moet weten over de Docker-architectuur. Dit zijn de punten die ik hier zal bespreken:

  1. Traditionele virtualisatie versus Docker
  2. Docker's workflow
  3. Docker-architectuur

Traditionele virtualisatie versus Docker

Wat is een VM (virtuele machine)?

Een VM is een virtuele server die een hardwareserver emuleert. Een virtuele machine vertrouwt op de fysieke hardware van het systeem om exact dezelfde omgeving te emuleren waarin u uw applicaties installeert. Afhankelijk van uw gebruiksscenario kunt u een virtuele systeemmachine gebruiken (die een volledig besturingssysteem als een proces uitvoert, waardoor u een virtuele machine kunt vervangen door een echte machine), of virtuele machines verwerken waarmee u computertoepassingen alleen in de virtuele machine kunt uitvoeren. milieu.





java verschil tussen implementaties en uitbreidingen

Eerder maakten we virtuele machines en elke VM had een besturingssysteem dat veel ruimte in beslag nam en zwaar maakte.

Wat is Docker?

Docker is een open-sourceproject dat een softwareontwikkelingsoplossing biedt die bekend staat als containers. Om Docker te begrijpen, moet u weten wat containers zijn. Volgens Docker , een container is een lichtgewicht, zelfstandig uitvoerbaar pakket van een stuk software dat alles bevat wat nodig is om het uit te voeren.



Containers zijn platformonafhankelijk en daarom kan Docker op zowel Windows- als Linux-gebaseerde platforms worden uitgevoerd. In feite kan Docker ook op een virtuele machine worden uitgevoerd als daar behoefte aan is. Het belangrijkste doel van Docker is dat u hiermee microservicetoepassingen kunt uitvoeren in een gedistribueerde architectuur.

In vergelijking met virtuele machines, beweegt het Docker-platform de abstractie van bronnen van het hardwareniveau naar het besturingssysteemniveau. Hierdoor kunnen de verschillende voordelen van containers worden gerealiseerd, b.v. overdraagbaarheid van applicaties, scheiding van infrastructuur en op zichzelf staande microservices.

Met andere woorden, terwijl virtuele machines de volledige hardwareserver abstraheren, abstraheren Containers de kernel van het besturingssysteem. Dit is een heel andere benadering van virtualisatie en resulteert in veel snellere en lichtere instanties.



vm vs docker - docker-architectuur - edureka

Docker's workflow

Laten we eerst eens kijken naar Docker Engine en zijn componenten, zodat we een basisidee hebben van hoe het systeem werkt. Met Docker Engine kunt u toepassingen ontwikkelen, samenstellen, verzenden en uitvoeren met behulp van de volgende componenten:

  1. Docker Daemon : Een permanent achtergrondproces dat Docker-images, containers, netwerken en opslagvolumes beheert. De Docker-daemon luistert constant naar Docker API-verzoeken en verwerkt deze.

  2. Docker Engine REST API : Een API wordt door applicaties gebruikt om te communiceren met de Docker-daemon. Het is toegankelijk via een HTTP-client.

  3. Docker-CLI : Een opdrachtregelinterfaceclient voor interactie met de Docker-daemon. Het vereenvoudigt aanzienlijk hoe u containerinstances beheert en is een van de belangrijkste redenen waarom ontwikkelaars Docker graag gebruiken.

In eerste instantie praat de Docker-client met de Docker-daemon, die het zware hijswerk van het gebouw uitvoert, draait en onze Docker-containers verdeelt. In wezen kunnen zowel de Docker-client als de daemon op hetzelfde systeem worden uitgevoerd. We kunnen ook een Docker-client verbinden met eenexterne Docker-daemon. Door een REST API te gebruiken, communiceren de Docker-client en daemon bovendien via UNIX-sockets of een netwerkinterface.

Docker-architectuur

De architectuur van Docker maakt gebruik van een client-servermodel en bestaat uit de Docker's Client, Docker Host, Network en Storage-componenten en de Docker Registry / Hub. Laten we elk van deze in detail bekijken.

Docker's Client

Docker-gebruikers kunnen via een client communiceren met Docker. Wanneer een docker-commando wordt uitgevoerd, stuurt de client deze naar de dockerd-daemon, die ze uitvoert. Docker API wordt gebruikt door Docker-opdrachten. Het is mogelijk dat de Docker-client met meer dan één daemon communiceert.

Docker-host

De Docker-host biedt een complete omgeving om applicaties uit te voeren en uit te voeren. Het bestaat uit de Docker-daemon, afbeeldingen, containers, netwerken en opslag. Zoals eerder vermeld, is de daemon verantwoordelijk voor alle container-gerelateerde acties en ontvangt hij commando's via de CLI ofde REST API. Het kan ook communiceren met andere daemons om zijn services te beheren.

Docker-objecten

1. Afbeeldingen

Afbeeldingen zijn niets anders dan een alleen-lezen binaire sjabloon die containers kan bouwen. Ze bevatten ook metadata die de mogelijkheden en behoeften van de container beschrijven. Afbeeldingen worden gebruikt om applicaties op te slaan en te verzenden. Een afbeelding kan op zichzelf worden gebruikt om een ​​container te bouwen of aangepast om extra elementen toe te voegen om de huidige configuratie uit te breiden.

U kunt de containerinstallatiekopieën delen met teams binnen een onderneming met behulp van een privécontainerregister, of deze delen met de wereld via een openbaar register zoals Docker Hub. Afbeeldingen vormen het kernelement van de Docker-ervaring, omdat ze samenwerking tussen ontwikkelaars mogelijk maken op een manier die voorheen niet mogelijk was

2. Containers

Containers zijn een soort ingekapselde omgevingen waarin u applicaties uitvoert. Container wordt gedefinieerd door de afbeelding en eventuele aanvullende configuratie-opties die worden geboden bij het starten van de container, inclusief en niet beperkt tot de netwerkverbindingen en opslagopties. Containers hebben alleen toegang tot bronnen die in de afbeelding zijn gedefinieerd, tenzij extra toegang is gedefinieerd bij het bouwen van de afbeelding in een container.

U kunt ook een nieuwe afbeelding maken op basis van de huidige status van een container. Omdat containers veel kleiner zijn dan VM's, kunnen ze binnen enkele seconden worden gedraaid, wat resulteert in een veel betere serverdichtheid

3. Netwerken

Docker-netwerken zijn een doorgang waardoor alle geïsoleerde containers communiceren. Er zijn hoofdzakelijk vijf netwerkstuurprogramma's in docker:

    1. Brug : Dit is het standaard netwerkstuurprogramma voor een container. U gebruikt dit netwerk wanneer uw applicatie op zelfstandige containers draait, d.w.z. meerdere containers die communiceren met dezelfde docker-host.

    2. Gastheer : Dit stuurprogramma verwijdert de netwerkisolatie tussen docker-containers en docker-host. U kunt het gebruiken wanneer u geen netwerkisolatie tussen host en container nodig heeft.

    3. Overlay : Dit netwerk stelt swarm-services in staat met elkaar te communiceren. U gebruikt het wanneer u wilt dat de containers op verschillende Docker-hosts draaien of wanneer u zwermservices wilt vormen door meerdere applicaties.

    4. Geen : Deze driver schakelt alle netwerken uit.

    5. macvlan : Dit stuurprogramma wijst een mac-adres toe aan containers om ze op fysieke apparaten te laten lijken. Het routeert het verkeer tussen containers via hun mac-adressen. U gebruikt dit netwerk wanneer u wilt dat de containers eruitzien als een fysiek apparaat, bijvoorbeeld tijdens het migreren van een VM-installatie.

4. Opslag

U kunt gegevens opslaan binnen de beschrijfbare laag van een container, maar hiervoor is een opslagstuurprogramma vereist. Omdat het niet-persistent is, gaat het verloren wanneer de container niet actief is. Bovendien is het niet eenvoudig om deze gegevens over te dragen. Met betrekking tot permanente opslag biedt Docker vier opties:

    1. Datavolumes : Ze bieden de mogelijkheid om permanente opslag te creëren, met de mogelijkheid om volumes te hernoemen, volumes weer te geven en ook de container weer te geven die aan het volume is gekoppeld. Datavolumes worden op het hostbestandssysteem geplaatst, buiten het kopieer-op-schrijfmechanisme van de containers en zijn redelijk efficiënt.

      mysql_fetch_array
    2. Volumecontainer : Het is een alternatieve benadering waarbij een speciale container een volume host en dat volume aan andere containers koppelt. In dit geval is de volumecontainer onafhankelijk van de applicatiecontainer en kunt u deze daarom over meer dan één container delen.

    3. Directory-koppelingen : Een andere optie is om de lokale directory van een host in een container te mounten. In de eerder genoemde gevallen zouden de volumes in de Docker-volumemap moeten staan, terwijl als het gaat om Directory Mounts elke directory op de hostcomputer kan worden gebruikt als bron voor het volume.

    4. Opslag plug-ins : Storage-plug-ins bieden de mogelijkheid om verbinding te maken met externe opslagplatforms. Deze plug-ins wijzen de opslag van de host toe aan een externe bron, zoals een opslagarray of een apparaat. U kunt een lijst met opslagplug-ins bekijken op de Plugin-pagina van Docker.

Docker’s Registry

Docker-registers zijn services die locaties bieden van waaruit u afbeeldingen kunt opslaan en downloaden. Met andere woorden, een Docker-register bevat Docker-opslagplaatsen die een of meer Docker-images hosten. Openbare registers bevatten twee componenten, namelijk de Docker Hub en Docker Cloud. U kunt ook privéregisters gebruiken. De meest voorkomende opdrachten bij het werken met registers zijn: docker push, docker pull, docker run

Nu je de Docker-architectuur hebt begrepen, kun je dit eens bekijken door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De Edureka DevOps Certification Training-cursus helpt leerlingen te begrijpen wat DevOps is en expertise op te doen in verschillende DevOps-processen en -tools zoals Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack en GIT voor het automatiseren van meerdere stappen in SDLC.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze “Docker-architectuur” en we nemen contact met u op