Docker-zelfstudie voor beginners: basisprincipes, Archistructuur, containers

Wat is Docker?

havenarbeider is een softwareontwikkelingsplatform voor virtualisatie met meerdere Operasystemen die op dezelfde host draaien. Het helpt bij het scheiden van infrastructuur en applicaties om zo snel software te kunnen leveren. In tegenstelling tot Hypervisors, die worden gebruikt voor het creëren van VM (Virtuele machines), wordt virtualisatie in Docker uitgevoerd op systeemniveau, ook wel Docker-containers genoemd.

Zoals je in de onderstaande afbeelding het verschil kunt zien, draaien Docker-containers bovenop die van de host Operasysteem. Dit helpt u de efficiëntie en veiligheid te verbeteren. Bovendien kunnen we meer containers op dezelfde infrastructuur draaien dan virtuele machines, omdat containers minder bronnen gebruiken.

Virtualisatie in Docker versus Hypervisor
Virtualisatie in Docker versus Hypervisor

In tegenstelling tot de VM's die kunnen communiceren met de hardware van de host (bijvoorbeeld: Ethernet-adapter om meer virtuele adapters te creëren) draaien Docker-containers in een geïsoleerde omgeving bovenop het besturingssysteem van de host. Zelfs als uw host actief is Windows OS, kunt u Linux-images in containers laten draaien met behulp van Hyper-V, dat automatisch een kleine VM creëert om de basisimage van het systeem te virtualiseren, in dit geval Linux.

Waarom Docker gebruiken?

  • Docker is computersoftware die wordt gebruikt voor virtualisatie om er meerdere te hebben Operasystemen draait op dezelfde host
  • Docker is een applicatie van het client-server-type, wat betekent dat we clients hebben die doorsturen naar de server
  • Docker-images zijn de “broncode” voor onze containers; wij gebruiken ze om te bouwen
  • Dockerfile heeft twee soorten registers: 1.) openbare en 2) privéregisters
  • Containers zijn de organisatie-eenheden van het Docker-volume. Simpel gezegd is een afbeelding een sjabloon en een container een kopie van die sjabloon. U kunt meerdere containers (kopieën) van dezelfde afbeelding hebben.

havenarbeider Architectuur

Laten we het nu in deze Docker-containertutorial hebben over de hoofdcomponenten van Docker in Docker Archistructuur:

havenarbeider Architectuur
havenarbeider Architectuur

Docker Engine

Docker is een applicatie van het client-server-type, wat betekent dat we clients hebben die doorsturen naar de server. Dus de Docker-daemon genaamd: dockerd is de Docker-engine die de server vertegenwoordigt. De docker-daemon en de clients kunnen op dezelfde of op een externe host worden uitgevoerd, en ze communiceren via binaire opdrachtregelclients, evenals een volledige RESTful API om te communiceren met de daemon: dockerd.

Docker-afbeeldingen

Docker-images zijn de “broncode” voor onze containers; we gebruiken ze om containers te bouwen. Er kan vooraf software worden geïnstalleerd die de implementatie versnelt. Ze zijn draagbaar en we kunnen bestaande afbeeldingen gebruiken of onze eigen afbeeldingen bouwen.

Docker-registers

Docker slaat de afbeeldingen die we bouwen op in registers. Er zijn publieke en private registers. Docker-bedrijf heeft een openbaar register genoemd Docker-hub, waar u ook afbeeldingen privé kunt opslaan. Docker hub heeft miljoenen afbeeldingen, die u nu kunt gaan gebruiken.

Docker-containers

Containers zijn de organisatie-eenheden en een van de basisconcepten van Docker. Wanneer we een image bouwen en deze gaan uitvoeren; we rennen in een container. De container-analogie wordt gebruikt vanwege de draagbaarheid van de software die in onze container draait. We kunnen het verplaatsen, met andere woorden, de software ‘verzenden’, wijzigen, beheren, creëren of verwijderen, vernietigen, net zoals vrachtschepen dat kunnen doen met echte containers.

Simpel gezegd is een afbeelding een sjabloon en een container een kopie van die sjabloon. U kunt meerdere containers (kopieën) van dezelfde afbeelding hebben.

Hieronder hebben we een afbeelding die perfect de interactie tussen de verschillende componenten weergeeft en hoe Docker-containertechnologie werkt.

We hebben verschillende docker-opdrachten: docker pull, docker run.. we zullen hier later meer over vertellen.

Hoe Docker op Linux te installeren/Ubuntu

Hieronder vindt u een stapsgewijs Docker-installatieproces op Linux/Ubuntu:

Stap 1) Om Docker te installeren, moeten we de DEB-pakketten van het Docker-team gebruiken.

Daarvoor is een voorwaarde Ubuntu pakketten zijn vereist.

Gebruik de onderstaande opdracht om te installeren Ubuntu Paketten

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*het teken “\” is niet nodig, het wordt gebruikt voor de nieuwe regel. Als u wilt, kunt u de opdracht schrijven zonder “\” in slechts één regel te gebruiken.

Stap 2) Voeg de officiële Docker GPG-sleutel toe met de vingerafdruk.

Gebruik de onderstaande Docker-opdracht om de GPG-sleutel in te voeren

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Stap 3) Voeg vervolgens de Docker APT-repository toe.

Gebruik de onderstaande Docker-opdracht om de repository toe te voegen

$ sudo add-apt-repository \ 
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 
$(lsb_release -cs) \
stable"

Mogelijk wordt u gevraagd te bevestigen dat u de repository wilt toevoegen en dat de GPG-sleutel automatisch aan uw host wordt toegevoegd.

De opdracht lsb_release moet het bestand Ubuntu distributieversie van uw host.

Stap 4) Na het toevoegen van de GPG-sleutel,

Update APT-bronnen met behulp van de onderstaande Docker-opdracht

$ sudo apt-get update

We kunnen nu het Docker-pakket zelf installeren.

Stap 5) Zodra de APT-bronnen zijn bijgewerkt,

Begin met het installeren van de Docker-pakketten op Ubuntu met behulp van de onderstaande Docker-opdracht

$ sudo apt-get install docker-ce

De hierboven gegeven opdracht installeert Docker en andere aanvullende vereiste pakketten. Vóór Docker 1.8.0 was de pakketnaam lxc-docker, en tussen Docker 1.8 en 1.13 was de pakketnaam docker-engine.

NOTITIE: Docker voor Windows vereist Windows 10 Pro- of Enterprise-versie 14393, of Windows server 2016 RTM om uit te voeren

Hoe Docker te gebruiken met behulp van standaard Docker-opdrachten

Hier ziet u hoe u Docker gebruikt met behulp van standaard Docker-opdrachten:

De meest elementaire opdracht die we moeten uitvoeren na het installeren van Docker is $ docker info, zoals we eerder zeiden.

$ sudo docker info

U zou een vergelijkbaar of volgend resultaat moeten krijgen

Gebruik Docker met basis Docker-opdrachten

Zoals we in het bovenstaande Docker-voorbeeld kunnen zien, hebben we informatie over docker-containers, hoeveel er actief, gepauzeerd of gestopt zijn en hoeveel afbeeldingen we hebben gedownload. Laten we dus onze eerste afbeelding in deze Docker-opdrachttutorial bekijken.

$ sudo docker pull alpine

Met deze opdracht vertellen we Docker om de afbeelding Alpine te downloaden en deze uit het openbare register te halen, de nieuwste versie die standaard is ingesteld.

*alpine is een minimale Docker-image gebaseerd op Alpine Linux met een volledige pakketindex en slechts 5 MB groot.

Als we de image als een container willen uitvoeren, gebruiken we de volgende opdracht in deze Docker-zelfstudiegids.

$ sudo docker run -i -t alpine /bin/bash

Als we het commando uitvoeren, worden we rechtstreeks naar de terminal van de Alpine gestuurd. De vlag -i houdt STDIN open vanuit de container, zelfs als u er niet aan gehecht bent. Deze persistente standaardinvoer is de helft van wat je nodig hebt voor een interactieve shell. De vlag -t is de andere helft en geeft Docker de opdracht een pseudo-tty aan de container toe te wijzen. Dit biedt ons een interactieve schil in de nieuwe container. We verlaten de container met een eenvoudig exit-commando.

In deze Docker-basistutorial kunnen we proberen een Ubuntu afbeelding.

$ sudo docker run -it ubuntu /bin/bash

Je kunt lokaal Docker-controles op de afbeelding opmerken, en als deze er niet is, wordt de afbeelding automatisch uit de afbeeldingsbibliotheek gehaald, en opnieuw hebben we een interactieve shell actief. We kunnen de containers ook een naam geven terwijl we ze gebruiken.

$ sudo docker run –-name our_container -it ubuntu /bin/bash

en wij gaan weer weg.

We kunnen ook een container uitvoeren die we eerder hebben gemaakt, zonder een interactieve shell.

$ sudo docker start container_name

En stop met het schrijven van de container docker stop container_name

$ sudo docker stop container_name

Als we alle lopende containers willen zien, rennen we gewoon

$ docker ps

En voor alle containers voegen we “- a” toe aan het einde van hetzelfde commando, zoals deze docker ps -a.

Met deze opdracht worden de ID van de container weergegeven, welke afbeelding wordt gebruikt toen deze werd gemaakt, de actieve status, de blootgestelde poorten en een willekeurig gegenereerde naam voor de container voor eenvoudiger beheer.

Als we containers draaien, willen we ook graag weten hoeveel bronnen ze gebruiken, daarvoor kunnen we het commando gebruiken.

$ docker stats

Je kunt ook zien welke afbeeldingen we lokaal hebben gedownload en informatie daarover.

$ sudo docker images

De opdracht in het bovenstaande Docker-voorbeeld geeft de docker-afbeelding weer met een tag die onze afbeeldingsversie toont, een onderscheidende afbeeldings-ID, wanneer deze is gemaakt en de afbeeldingsgrootte.

Wat is virtualisatie?

Vroeger was het proces voor het implementeren van een service traag en pijnlijk. Eerst schreven de ontwikkelaars code; daarna implementeerde het operationele team het op bare metal machines, waar ze moesten uitkijken naar bibliotheekversies, patches en taalcompilers om de code te laten werken. Als er bugs of fouten waren, begon het proces weer opnieuw, de ontwikkelaars repareerden het en daarna was het operationele team er weer om te implementeren.

Er was een verbetering met de creatie van hypervisors. Hypervisors hebben er meerdere Virtuele machines of VM's op dezelfde host, die mogelijk actief of uitgeschakeld zijn. VM's hebben de wachttijd voor het implementeren van code en het oplossen van bugs aanzienlijk verkort, maar de echte gamechanger waren Docker-containers.

Belangrijke Docker-opdrachten

Hieronder staan ​​de belangrijke Docker-opdrachten:

commando BESCHRIJVING
havenarbeider info Informatie Commando
havenarbeider Een afbeelding downloaden
docker run -i -t afbeeldingsnaam /bin/bash Voer de afbeelding uit als een container
docker start onze_container Begin container
docker stop containernaam Houd container tegen
koppelaar ps Lijst met alle actieve containers
docker-statistieken Containerinformatie
docker-afbeeldingen Lijst met gedownloade afbeeldingen
Docker-opruiming Dood alle lopende containers.

Lees ook Docker sollicitatiegesprek vragen en antwoorden voor zowel beginnende als ervaren professionals.

Samenvatting

  • Docker is een softwareontwikkelingsplatform voor virtualisatie met meerdere Operasystemen die op dezelfde host draaien. Het helpt bij het scheiden van infrastructuur en applicaties om zo snel software te kunnen leveren.
  • havenarbeider Archistructuur: Docker Engine, Docker-images, Docker-registers, Docker-containers.
  • Docker-engine: Docker is een applicatie van het client-server-type, wat betekent dat we clients hebben die doorsturen naar de server. Dus de Docker-daemon genaamd: dockerd is de Docker-engine die de server vertegenwoordigt.
  • Docker-afbeeldingen: Docker-images zijn de “broncode” voor onze containers; we gebruiken ze om containers te bouwen. Er kan vooraf software worden geïnstalleerd die de implementatie versnelt. Ze zijn draagbaar en we kunnen bestaande afbeeldingen gebruiken of onze eigen afbeeldingen bouwen.
  • Docker-registers: Docker slaat de afbeeldingen die we bouwen op in registers. Er zijn publieke en private registers. Het Docker-bedrijf heeft een openbaar register genaamd Docker Hub, waar u afbeeldingen ook privé kunt opslaan. Docker hub heeft miljoenen afbeeldingen, die u nu kunt gaan gebruiken.
  • Docker-containers: Containers zijn de organisatie-eenheden en een van de basisconcepten van Docker. Wanneer we een image bouwen en deze gaan uitvoeren; we rennen in een container. De container-analogie wordt gebruikt vanwege de draagbaarheid van de software die in onze container draait.