Docker-zelfstudie voor beginners: basisprincipes, Archistructuur, containers

⚡ Slimme samenvatting

Docker is een containerisatieplatform dat applicaties en hun afhankelijkheden verpakt in draagbare, lichtgewicht containers. Dit overzicht beschrijft de architectuur van Docker en de installatie ervan. UbuntuEssentiële commando's en hoe containers verschillen van traditionele virtuele machines voor snellere softwarelevering.

  • 🐳 Containerisatie: Docker virtualiseert op besturingssysteemniveau, waardoor containers de hostkernel delen en minder resources gebruiken dan virtuele machines.
  • 🧱 Archistructuur: De Docker-engine (dockerd), images, registries en containers vormen de client-serverarchitectuur die aan elke Docker-workflow ten grondslag ligt.
  • ???? Afbeeldingen en containers: Een image is een alleen-lezen sjabloon, terwijl een container een actieve kopie is, en één image kan meerdere containers starten.
  • ️ Registers: Docker Hub slaat openbare en privé-images op, waardoor je toegang hebt tot miljoenen kant-en-klare images die je kunt downloaden en uitvoeren.
  • ⚙️ Installatie: On Ubuntu Je voegt de Docker APT-repository en de GPG-sleutel toe en installeert vervolgens het docker-ce-pakket met apt-get.
  • ​ Kernopdrachten: Beheer containers met `docker pull`, `run`, `start`, `stop`, `ps`, `stats` en `images` vanaf de commandoregel.

Docker-handleiding voor beginners, met aandacht voor architectuur en installatie. Ubuntuen basiscontainercommando's

Docker is een van de populairste containerisatieplatformen die in de moderne tijd worden gebruikt. DevOps en cloudworkflows. Deze Docker-handleiding voor beginners legt uit wat Docker is, hoe de Docker-architectuur werkt en hoe je Docker installeert. Ubuntuen de basiscommando's die worden gebruikt om afbeeldingen en containers te beheren.

Wat is Docker?

havenarbeider Docker is een softwareontwikkelingsplatform voor virtualisatie waarmee meerdere besturingssystemen op dezelfde host kunnen draaien. Het helpt je om infrastructuur en applicaties van elkaar te scheiden, zodat je snel software kunt leveren. In tegenstelling tot hypervisors, die worden gebruikt om virtuele machines (VM's) te creëren, voert Docker virtualisatie uit op systeemniveau met behulp van zogenaamde Docker-containers.

Docker-containers draaien bovenop het hostbesturingssysteem, zoals te zien is in de onderstaande afbeelding. Dit verbetert zowel de efficiëntie als de beveiliging. Je kunt ook meer containers dan virtuele machines op dezelfde infrastructuur draaien, omdat containers minder resources verbruiken.

Virtualisatie in Docker versus Hypervisor
Virtualisatie in Docker versus Hypervisor

In tegenstelling tot virtuele machines, die rechtstreeks met de hosthardware kunnen communiceren (bijvoorbeeld een Ethernet-adapter die meer virtuele adapters creëert), draaien Docker-containers in een geïsoleerde omgeving bovenop het hostbesturingssysteem. Zelfs als uw host draait... Windows, je kan lopen Linux afbeeldingen in containers met behulp van Hyper-V, wat automatisch een kleine VM creëert om de basisimage te virtualiseren.

Nu je weet wat Docker is, laten we eens kijken naar de belangrijkste redenen waarom teams ervoor kiezen.

Waarom Docker gebruiken?

Dit zijn de belangrijkste redenen om Docker te gebruiken:

  • Docker is software die wordt gebruikt voor virtualisatie, waardoor meerdere apparaten tegelijk kunnen worden gebruikt. besturingssystemen om op dezelfde host te draaien.
  • Docker is een client-serverapplicatie, wat betekent dat clients met een server communiceren.
  • Docker-images fungeren als de "broncode" voor containers; je gebruikt ze om te bouwen.
  • Docker ondersteunt twee soorten registers: openbaar en privé.
  • Containers zijn de organisatorische eenheden van Docker. Simpel gezegd is een image een sjabloon en een container een kopie van dat sjabloon, waardoor je meerdere containers kunt uitvoeren vanuit dezelfde image.

Deze voordelen vloeien voort uit de manier waarop Docker is ontworpen. In het volgende gedeelte wordt de Docker-architectuur en de belangrijkste componenten ervan nader toegelicht.

havenarbeider Architectuur

In deze handleiding over Docker-containers bekijken we nu de belangrijkste componenten van de Docker-architectuur.

havenarbeider ArchiTecture-componenten: engine, images, registries en containers

havenarbeider Architectuur

Docker Engine

Docker is een client-serverapplicatie, wat betekent dat we clients hebben die verzoeken doorsturen naar een server. De Docker-daemon, genaamd dockerd, is de Docker-engine die de server vertegenwoordigt. De daemon en de clients kunnen op dezelfde of een externe host draaien en communiceren via een commandoregelclientprogramma en een volledige applicatie. RESTful API dat samenwerkt met dockerd.

Docker-afbeeldingen

Docker-images zijn de "broncode" voor onze containers; we gebruiken ze om containers te bouwen. Images kunnen vooraf geïnstalleerde software bevatten, wat de implementatie versnelt. Ze zijn draagbaar en je kunt bestaande images gebruiken of je eigen images bouwen.

Docker-registers

Docker slaat de door ons gebouwde images op in registries. Er zijn openbare en privéregistries. Docker heeft een openbare registry genaamd Docker-hubWaar je afbeeldingen ook privé kunt opslaan. Docker Hub heeft miljoenen afbeeldingen die je direct kunt gebruiken.

Docker-containers

Containers zijn de organisatorische eenheden van Docker en een van de basisconcepten ervan. Wanneer we een image bouwen en uitvoeren, draaien we deze binnen een container. De analogie met een container wordt gebruikt vanwege de draagbaarheid van de software die erin draait: je kunt de software verplaatsen, 'verzenden', wijzigen, beheren, creëren of vernietigen, net zoals vrachtschepen echte containers vervoeren.

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.

De interactie tussen deze verschillende componenten laat zien hoe Docker-containertechnologie werkt. Commando's zoals `docker pull` en `docker run`, die we later bespreken, stellen je in staat deze workflow te beheren.

Met de architectuur in gedachten, gaan we Docker installeren zodat je deze componenten zelf kunt uitproberen.

Hoe Docker op Linux te installeren/Ubuntu

Hieronder volgt een stapsgewijze handleiding voor het installeren van Docker op Linux.Ubuntu:

Stap 1) Om Docker te installeren, heb je de DEB-pakketten van het Docker-team nodig. Eerst een aantal vereisten. Ubuntu Pakketten zijn vereist. Gebruik de onderstaande opdracht om ze te installeren.

$ 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 met vingerafdruk toe. 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 met behulp van de onderstaande opdracht.

$ 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 moet worden toegevoegd. De opdracht lsb_release zou de gegevens moeten invullen. Ubuntu distributieversie van uw host.

Stap 4) Nadat je de GPG-sleutel hebt toegevoegd, werk je de APT-bronnen bij met behulp van de onderstaande Docker-opdracht.

$ sudo apt-get update

Je kunt nu het Docker-pakket zelf installeren.

Stap 5) Zodra de APT-bronnen zijn bijgewerkt, kunt u beginnen met het installeren van de Docker-pakketten. Ubuntu Gebruik hiervoor het onderstaande Docker-commando.

$ sudo apt-get install docker-ce

Met het bovenstaande commando worden Docker en andere benodigde pakketten geïnstalleerd. 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

Hieronder leggen we uit hoe je Docker kunt gebruiken met een paar basis Docker-commando's.

Het meest basale commando dat je na de installatie van Docker moet uitvoeren, is `docker info`, zoals eerder vermeld.

$ sudo docker info

Je zou een resultaat moeten krijgen dat lijkt op het volgende.

Gebruik Docker met behulp van basis Docker-opdrachten en bekijk de uitvoer van `docker info`.

Zoals in het bovenstaande Docker-voorbeeld te zien is, kunnen we informatie over Docker-containers bekijken: hoeveel er draaien, gepauzeerd of gestopt zijn, en hoeveel images er gedownload zijn. Laten we nu onze eerste image downloaden.

$ sudo docker pull alpine

Met dit commando vertellen we Docker om de Alpine-image te downloaden, die standaard de nieuwste versie uit het openbare register haalt.

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

Als we de image als container willen uitvoeren, gebruiken we het volgende commando.

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

Door het commando uit te voeren, komen we direct in de Alpine-terminal terecht. De vlag -i zorgt ervoor dat STDIN vanuit de container open blijft, zelfs als je er niet aan gekoppeld bent; deze permanente standaardinvoer is de helft van wat je nodig hebt voor een interactieve shell. De vlag -t is de andere helft en instrueert Docker om een ​​pseudo-tty aan de container toe te wijzen. Samen geven ze ons een interactieve shell in de nieuwe container. We verlaten de container met een eenvoudig exit-commando.

In deze tutorial over de basisprincipes van Docker kunnen we nu proberen een applicatie uit te voeren. Ubuntu afbeelding.

$ sudo docker run -it ubuntu /bin/bash

Merk op dat Docker lokaal controleert of de image aanwezig is, en zo niet, dan wordt de image automatisch uit de imagebibliotheek gehaald. We hebben wederom een ​​interactieve shell die draait. We kunnen containers ook een naam geven terwijl we ze uitvoeren.

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

Vervolgens verlaten we het systeem weer. We kunnen ook een eerder aangemaakte container uitvoeren zonder interactieve shell.

$ sudo docker start container_name

En we stoppen de container door `docker stop container_name` te typen.

$ sudo docker stop container_name

Als we alle actieve containers willen zien, hoeven we alleen maar het volgende commando uit te voeren.

$ docker ps

Voor alle containers voegen we "-a" toe aan het einde van hetzelfde commando, bijvoorbeeld `docker ps -a`. Dit commando toont de container-ID, de gebruikte image, de aanmaakdatum, de status, de geopende poorten en een willekeurig gegenereerde naam voor eenvoudiger beheer.

Wanneer we containers uitvoeren, willen we vaak weten hoeveel resources ze gebruiken. Daarvoor kunnen we de volgende opdracht gebruiken.

$ docker stats

Je kunt ook zien welke afbeeldingen je lokaal hebt gedownload, samen met informatie erover.

$ sudo docker images

De opdracht in het bovenstaande Docker-voorbeeld toont elke Docker-image met een tag die de imageversie, een unieke image-ID, de aanmaakdatum en de imagegrootte weergeeft.

Om te begrijpen waarom containers zo'n grote verbetering zijn, is het nuttig om te kijken naar de evolutie van virtualisatie.

Wat is virtualisatie?

Voorheen was het implementeren van een service een traag en moeizaam proces. Ontwikkelaars schreven code, waarna het operationele team deze implementeerde op fysieke machines. Daar moesten ze de bibliotheekversies, patches en compilers in de gaten houden om ervoor te zorgen dat de code werkte. Als er bugs of fouten waren, begon het hele proces opnieuw: de ontwikkelaars losten het probleem op en het operationele team implementeerde de service opnieuw.

De situatie verbeterde met de komst van hypervisors. Hypervisors voeren meerdere processen tegelijk uit. virtuele machines, of VM's, op dezelfde host, die al dan niet actief kunnen zijn. VM's verkortten de wachttijd voor het implementeren van code en het oplossen van bugs aanzienlijk, maar de echte gamechanger waren Docker-containers.

De populariteit van Docker wordt mede gedreven door orchestratietools die containers op grote schaal beheren, zoals KubernetesVoordat we verdergaan, volgt hier een kort overzicht van de belangrijkste Docker-commando's.

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 van alle actieve containers
docker-statistieken Containerinformatie
docker-afbeeldingen Lijst met gedownloade afbeeldingen
Docker-opruiming Dood alle lopende containers.

Lees ook deze artikelen. Docker sollicitatiegesprek vragen en antwoorden Voor zowel starters als ervaren professionals.

Veelgestelde vragen

Een Docker-container deelt de kernel van het hostbesturingssysteem en isoleert alleen de applicatie, waardoor deze lichtgewicht is en binnen enkele seconden opstart. Een virtuele machine bundelt een volledig gastbesturingssysteem, waardoor deze groter, trager en meer resource-intensief is.

Een Dockerfile is een script in platte tekst met instructies zoals FROM, RUN, COPY en CMD. Docker leest deze instructies om automatisch een image te bouwen. Elke regel voegt een laag toe, waardoor je dezelfde omgeving op elke machine kunt reproduceren.

Docker Compose definieert en voert applicaties met meerdere containers uit met behulp van één enkel YAML-bestand. Je beschrijft elke service, elk netwerk en elk volume één keer en start vervolgens alles met het commando `docker compose up`. Het is ideaal voor lokale ontwikkeling en het testen van verbonden services.

Docker bouwt en voert individuele containers uit, terwijl Kubernetes Docker orkestreert veel containers in een cluster. Kubernetes voegt daar automatische schaling, zelfherstel en load balancing aan toe. In de praktijk verpakt Docker de applicatie en beheert Kubernetes deze in productie.

Docker Engine is gratis en open source onder de Apache 2.0-licentie. Docker Desktop is gratis voor persoonlijk gebruik, onderwijs en kleine bedrijven, maar grotere bedrijven hebben een betaald abonnement nodig. Docker Hub biedt zowel gratis als betaalde pakketten voor het hosten van imagebestanden.

Docker draait van nature op Linux en wordt ondersteund op Windows en macOS via Docker Desktop. Op Windows En Mac gebruikt Docker een lichtgewicht virtuele machine om de Linux-kernel uit te voeren die containers nodig hebben. De meeste containerimages zijn gebaseerd op Linux.

AI-assistenten genereren Dockerfiles, docker-compose-bestanden en CLI-opdrachten op basis van eenvoudige prompts. Ze lezen ook buildlogs en containerfouten, leggen de oorzaak uit en stellen oplossingen voor. Controleer altijd de gegenereerde configuratie op correcte imagetags, paden en beveiligingsinstellingen voordat u deze uitvoert.

Ja. GitHub-copiloot ChatGPT kan Dockerfiles en Compose-bestanden genereren op basis van een korte opmerking of beschrijving. Dit versnelt het schrijven van standaardcode, maar je moet wel de basisimages, versies en best practices controleren, omdat de gegenereerde codefragmenten mogelijk verouderde standaardinstellingen gebruiken.

Vat dit bericht samen met: