Docker-containers gebruiken
Containers zijn de levensader van elke Docker-installatie. Ze vormen de basis van het Docker-platform en stellen u in staat om services op uw computer uit te voeren zonder u zorgen te hoeven maken over afhankelijkheden en versieconflicten. Hier laten we u de basis zien van het maken, beheren en aanpassen van Docker-containers met behulp van de Docker CLI-tool.
Hoe u een Docker-image kunt vinden en ophalen
Docker-containers zijn een speciaal type softwareomgeving waarmee u programma’s los van de rest van uw oorspronkelijke systeem kunt uitvoeren. Om dit te bereiken, gebruikt Docker “software-images”. Dit zijn statische kopieën van programma’s die dienen als basis van waaruit een container start.
Dit onderscheid tussen image en container stelt u in staat om uw software op elke gewenste manier opnieuw te creëren en aan te passen. U kunt bijvoorbeeld een image hebben zoals “httpd”, maar er twee afzonderlijke containers uit laten draaien: “website1” en “website2.”
De eenvoudigste manier om een nieuwe Docker-image te bekijken, is door de search
subopdracht te gebruiken:
Om de afbeelding naar uw systeem te downloaden, voert u de volgende opdracht uit:
Controleer of u uw nieuwe afbeelding correct aan uw systeem hebt toegevoegd met behulp van de images
subopdracht:
Een nieuwe afbeelding bouwen met behulp van Dockerfiles
Naast het ophalen van vooraf gebouwde images van Docker Hub, kunt u images rechtstreeks vanuit de Docker CLI bouwen. Dit is handig als u aangepaste versies van bestaande softwarepakketten wilt maken of nieuwe apps naar Docker wilt porteren.
Om dit te doen, maakt u eerst een map in uw home directory voor uw build-bestanden:
Maak een nieuw Dockerfile met uw favoriete teksteditor:
Plak de volgende coderegels in uw nieuwe Dockerfile:
Maak een map “sample-site” en kopieer of maak een eenvoudige HTML-site:
Sla uw nieuwe Dockerfile op en voer de volgende opdracht uit om het op uw systeem te bouwen:
Controleer of uw nieuwe Docker-image aanwezig is in uw lijst met Docker-images:
Een nieuw image bouwen met behulp van bestaande containers
De Docker CLI-tool kan ook nieuwe images bouwen uit de containers die momenteel in uw systeem aanwezig zijn. Dit is handig als u al in een bestaande omgeving werkt en u een nieuwe image wilt maken uit uw huidige setup.
Om dit te doen, moet u ervoor zorgen dat uw container momenteel niet actief is:
Voer de commit
subopdracht uit, gevolgd door de naam van uw container. Geef daarna de naam van uw nieuwe Docker-image op:
Controleer of uw nieuwe Docker-image op uw systeem staat door . uit te voeren docker images
.
Een Docker-container uitvoeren en stoppen
Nu uw Docker-image gereed is, kunt u deze gebruiken om uw eerste container te maken. Gebruik hiervoor de run
subopdracht gevolgd door de naam van de image die u wilt uitvoeren:
Hoewel dit werkt voor het uitvoeren van uw eerste Docker-container, zal deze manier uw huidige shell-sessie overnemen. Om uw container op de achtergrond uit te voeren, voegt u de -d
vlag toe na de run
subopdracht:
De run
subopdracht kan ook een aantal extra vlaggen bevatten die het gedrag van uw nieuwe Docker-container kunnen wijzigen. De vlag stelt u bijvoorbeeld --name
in staat om een aanpasbare naam aan uw container toe te voegen:
Aan de andere kant kunt u de --publish
vlag gebruiken om de netwerkpoort om te leiden waar u toegang hebt tot uw Docker-container. Dit is vooral handig als u niet wilt dat uw container een geprivilegieerde poort overneemt:
U kunt alle Docker-containers die momenteel in uw systeem actief zijn, controleren door de volgende opdracht uit te voeren:
Vergelijkbaar met de run
subopdracht, ps
kan ook een handvol vlaggen bevatten die het gedrag ervan zullen wijzigen. Om bijvoorbeeld de containers te bekijken die momenteel down zijn, gebruikt u de -a
vlag:
Om een actieve container uit te schakelen, gebruikt u de stop
subopdracht gevolgd door de container-ID of de naam van uw Docker-container:
U kunt elke container die u hebt gestopt opnieuw opstarten door de start
subopdracht opnieuw uit te voeren:
Een Docker-container pauzeren en beëindigen
Met de Docker CLI-tool kunt u ook een lopend containerproces tijdelijk pauzeren en beëindigen. Dit kan handig zijn als u een probleem met uw Docker-installatie wilt oplossen en u een slecht functionerende container wilt isoleren of stoppen.
Begin met het docker ps
weergeven van alle actieve containers in het systeem.
Zoek de ID of de naam van de container die u wilt beheren.
Voer de pause
subopdracht uit, gevolgd door de naam van de container die u tijdelijk wilt opschorten:
U kunt een onderbroken proces hervatten door de unpause
subopdracht uit te voeren:
Om een proces dat zich misdraagt te stoppen, voert u de kill
subopdracht uit, gevolgd door de naam van uw container:
Hoe u een Docker-container inspecteert
Kennis van de ingewikkelde details van uw container is een essentieel onderdeel van het onderhouden van de gezondheid van uw Docker-stack. Het stelt u in staat om snel te kijken naar mogelijke problemen en het kan het verschil maken tussen het oplossen of opnieuw uitvoeren van uw hele implementatie.
Om een overzicht van uw Docker-container te bekijken, voert u de inspect
subopdracht uit:
Als u dit doet, wordt een lange JSON-string afgedrukt die de huidige status van uw hele container beschrijft. U kunt dit beperken door de uitvoer naar jq te sturen of door de ingebouwde -f
vlag te gebruiken, gevolgd door het JSON-object dat u wilt afdrukken:
Containerlogboeken afdrukken naar de terminal
Daarnaast kunt u ook de logs van elke Docker-container die momenteel draait, bijhouden en afdrukken. Dit kan handig zijn als u wilt controleren hoe uw service zich momenteel gedraagt en wilt kijken naar de output die deze naar STDOUT retourneert.
Voer hiervoor de subopdracht logs uit, gevolgd door de naam van uw container:
U kunt ook de subopdracht logs uitvoeren met de --follow
vlag om een doorlopend logboek van uw Docker-service te maken. Dit is vergelijkbaar met uitvoeren tail -f
aan het einde van een UNIX-pipe:
Net als andere subcommando’s kunt u ook verschillende vlaggen toevoegen om de uitvoer van het logboek van uw Docker-container aan te passen. De vlag voegt bijvoorbeeld --timestamps
een gedetailleerde tijdstempel toe voor elk bericht dat uw container naar zijn STDOUT stuurt:
De --details
vlag zal zelfs de omgevingsvariabelen afdrukken die u hebt ingesteld voor uw huidige Docker-container. Ondertussen --since
kunt u met de vlag alleen logs weergeven die na een bepaald tijdstip zijn gebeurd:
Hoe u een Docker-container aanpast
In essentie is een Docker Container een kleine, uitgeklede versie van Linux die op uw huidige systeem draait. Dit betekent dat het, net als bij een virtuele machine, mogelijk is om toegang te krijgen tot de data in uw container en deze op te halen.
Om een lokaal bestand van uw hostcomputer naar de container te kopiëren, voert u de cp
subopdracht uit:
Soms moet je ook ‘in’ containers stappen door een shell erin te openen. Op deze manier kun je bestanden bewerken, binaire bestanden installeren en ze naar eigen wens aanpassen:
Nu kunt u bijvoorbeeld “index.html” bewerken en een startpagina voor de website daarbinnen maken.
U kunt de shell van de container verlaten door op Ctrl+ te drukken Dof door exit
op de terminal te rennen.
Docker-containers en -images verwijderen
Het verwijderen van ongebruikte Docker-containers en -images is een belangrijk onderdeel van de algemene huishouding van uw implementatie. Hiermee kunt u onnodige bestanden van uw server verwijderen, wat op de lange termijn opslagruimte bespaart.
Voordat u een container verwijdert, moet u ervoor zorgen dat u deze eerst hebt gestopt:
Verwijder nu de container met behulp van de rm
subopdracht:
Controleer of u uw oude Docker-container correct hebt verwijderd door . uit te voeren docker ps -a
.
Verwijder uw originele Docker-image uit uw Docker-implementatie:
Controleer of u de originele Docker-image correct hebt verwijderd door . uit te voeren docker images
.
Leren hoe u Docker-containers kunt maken, beheren en verwijderen, is slechts een greep uit de mogelijkheden die u met uw Linux-server kunt doen.
Beeldmateriaal: Shamin Haky via Unsplash . Alle wijzigingen en screenshots door Ramces Red.
Geef een reactie