Docker-containers gebruiken

Docker-containers gebruiken
Een foto van iemand die op een laptop programmeert.

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 searchsubopdracht te gebruiken:

Een terminal die de httpd Docker-image van de CLI-tool markeert.
Een screenshot van de httpd Docker-image van de Docker Hub-website.

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 imagessubopdracht:

Een terminal die de geïnstalleerde httpd Docker-image op het systeem markeert.

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:

Een terminal met een voorbeeld van een Dockerfile-configuratie voor een aangepaste Nginx-image.

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 terminal die de aangepaste afbeelding markeert die is gegenereerd met de build-subopdracht.

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 commitsubopdracht uit, gevolgd door de naam van uw container. Geef daarna de naam van uw nieuwe Docker-image op:

Een terminal met de subopdracht commit waarmee een nieuwe image wordt gemaakt vanuit een Docker-container.

Controleer of uw nieuwe Docker-image op uw systeem staat door . uit te voeren docker images.

Een terminal die de nieuwe aangepaste afbeelding van een Docker-container die in het systeem is geïnstalleerd, benadrukt.

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 runsubopdracht 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 -dvlag toe na de runsubopdracht:

De runsubopdracht kan ook een aantal extra vlaggen bevatten die het gedrag van uw nieuwe Docker-container kunnen wijzigen. De vlag stelt u bijvoorbeeld --namein staat om een ​​aanpasbare naam aan uw container toe te voegen:

Aan de andere kant kunt u de --publishvlag 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:

Een schermafbeelding van een webbrowser die de website opent die wordt gehost door de aangepaste Docker-container.

U kunt alle Docker-containers die momenteel in uw systeem actief zijn, controleren door de volgende opdracht uit te voeren:

Vergelijkbaar met de runsubopdracht, pskan ook een handvol vlaggen bevatten die het gedrag ervan zullen wijzigen. Om bijvoorbeeld de containers te bekijken die momenteel down zijn, gebruikt u de -avlag:

Om een ​​actieve container uit te schakelen, gebruikt u de stopsubopdracht gevolgd door de container-ID of de naam van uw Docker-container:

Een terminal die het proces toont voor het uitschakelen van een Docker-container die momenteel actief is.

U kunt elke container die u hebt gestopt opnieuw opstarten door de startsubopdracht 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 psweergeven van alle actieve containers in het systeem.

Zoek de ID of de naam van de container die u wilt beheren.

Een terminal die de aangepaste Docker-container markeert die momenteel op het systeem wordt uitgevoerd.

Voer de pausesubopdracht uit, gevolgd door de naam van de container die u tijdelijk wilt opschorten:

U kunt een onderbroken proces hervatten door de unpausesubopdracht uit te voeren:

Om een ​​proces dat zich misdraagt ​​te stoppen, voert u de killsubopdracht 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 inspectsubopdracht 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 -fvlag te gebruiken, gevolgd door het JSON-object dat u wilt afdrukken:

Een terminal met de filtervlag voor de subopdracht inspect in een actieve Docker-container.

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 --followvlag om een ​​doorlopend logboek van uw Docker-service te maken. Dit is vergelijkbaar met uitvoeren tail -faan het einde van een UNIX-pipe:

Een terminal met de continue logboeken voor een Docker-container.

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 --timestampseen gedetailleerde tijdstempel toe voor elk bericht dat uw container naar zijn STDOUT stuurt:

De --detailsvlag zal zelfs de omgevingsvariabelen afdrukken die u hebt ingesteld voor uw huidige Docker-container. Ondertussen --sincekunt u met de vlag alleen logs weergeven die na een bepaald tijdstip zijn gebeurd:

Een terminal met een meer gedetailleerde loguitvoer van een Docker-container die op dat moment actief is.

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 cpsubopdracht 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:

Een terminal die het proces van het neerzetten op de rootshell van een container laat zien.

Nu kunt u bijvoorbeeld “index.html” bewerken en een startpagina voor de website daarbinnen maken.

Een terminal met een HTML-bestand dat is gekopieerd naar de rootshell van een Docker-container.

U kunt de shell van de container verlaten door op Ctrl+ te drukken Dof door exitop de terminal te rennen.

Een terminal die de exit-opdracht van de root-shell van de Docker-container markeert.

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 rmsubopdracht:

Controleer of u uw oude Docker-container correct hebt verwijderd door . uit te voeren docker ps -a.

Een terminal met alle beschikbare Docker-containers, inclusief de containers die momenteel niet beschikbaar zijn.

Verwijder uw originele Docker-image uit uw Docker-implementatie:

Een terminal die de uitvoer van het verwijderen van een Docker-image van het systeem markeert.

Controleer of u de originele Docker-image correct hebt verwijderd door . uit te voeren docker images.

Een terminal met de bijgewerkte lijst met 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

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *