Docker-handleiding voor beginners
In onze Docker-tutorial laten we je kennismaken met het virtualisatieplatform Docker en laten we je aan de hand van eenvoudig te volgen instructies zien hoe je Docker op je Ubuntu 22.04-systeem kunt gebruiken.
Structuur en kenmerken van Docker
‘Bouw, verzend en voer elke app uit, waar dan ook’ – dat is het motto van Docker. Het open-source containerplatform biedt een flexibel, resource-arm alternatief voor de emulatie van hardwarecomponenten op basis van virtuele machines (VM’s).
Terwijl traditionele hardwarevirtualisatie gebaseerd is op het starten van meerdere gastsystemen op een gemeenschappelijk hostsysteem, worden Docker-applicaties met behulp van containers als geïsoleerde processen op hetzelfde systeem uitgevoerd. Dit wordt containergebaseerde virtualisatie genoemd, ook wel virtualisatie op besturingssysteemniveau genoemd.

Een groot voordeel van containergebaseerde virtualisatie is dat applicaties met verschillende vereisten geïsoleerd van elkaar kunnen draaien zonder dat er een apart gastsysteem nodig is. Bovendien kunnen applicaties met containers op verschillende platforms en in verschillende infrastructuren worden geïmplementeerd zonder dat ze moeten worden aangepast aan de hardware- of softwareconfiguraties van het hostsysteem.
Docker is het populairste softwareproject dat gebruikers containergebaseerde virtualisatietechnologie biedt. Het open-sourceplatform is gebaseerd op drie basiscomponenten. Om containers uit te voeren, hebben gebruikers alleen de Docker-engine en speciale Docker-images nodig, die via de Docker-hub kunnen worden verkregen of zelf kunnen worden gemaakt.
Docker-images
Net als virtuele machines zijn Docker-containers gebaseerd op Docker-images. Een image is een alleen-lezen sjabloon dat alle instructies bevat die de Docker-engine nodig heeft om een container te maken. Een Docker-image wordt beschreven als een draagbare afbeelding van een container in de vorm van een tekstbestand, ook wel een Dockerfile genoemd. Als een container op een systeem moet worden gestart, wordt eerst een pakket met de betreffende image geladen, mits deze niet lokaal aanwezig is. De geladen image biedt het benodigde bestandssysteem, inclusief alle parameters voor de runtime. Een container kan worden gezien als een actief proces van een image.
De Docker-hub
De Docker Hub is een cloudgebaseerd register voor software-repositories, een soort bibliotheek voor Docker-images. De online dienst is opgesplitst in een openbaar en een privé-gedeelte. Het openbare gedeelte biedt gebruikers de mogelijkheid om hun eigen ontwikkelde images te uploaden en te delen met de community. Hier zijn een aantal officiële images beschikbaar van het Docker-ontwikkelaarsteam en gevestigde open-sourceprojecten. Beelden die naar het privé-gedeelte van het register worden geüpload, zijn niet openbaar toegankelijk en kunnen dus bijvoorbeeld worden gedeeld binnen de interne kring van een bedrijf of met vrienden of kennissen. De Docker Hub is toegankelijk via hub.docker.com.
De Docker-engine
De kern van het Docker-project wordt gevormd door de Docker-engine. Dit is een open-source client-serverapplicatie, die in de huidige versie voor alle gebruikers beschikbaar is op alle gangbare platforms.
De basisarchitectuur van de Docker-engine is verdeeld over drie componenten: een daemon met serverfuncties, een programmeerinterface (API) gebaseerd op het programmeerparadigma REST (Representational State Transfer) en de terminal van het besturingssysteem (command line interface, CLI) als gebruikersinterface (client).
- Docker-daemon: Als server voor de Docker-engine wordt een daemon-proces gebruikt. De Docker-daemon draait op de achtergrond van het hostsysteem en wordt gebruikt voor de centrale aansturing van de Docker-engine. Deze functie creëert en beheert alle images, containers of netwerken.
- REST-API: De REST-API specificeert een reeks interfaces waarmee andere programma’s kunnen communiceren met de Docker-daemon en deze instructies kunnen geven. Een van deze programma’s is de terminal van het besturingssysteem.
- Terminal: Als clientprogramma gebruikt Docker de terminal van het besturingssysteem. Deze is via de REST-API geïntegreerd met de Docker-daemon, waardoor gebruikers deze kunnen bedienen via scripts of gebruikersinvoer.
In 2017 werd de Docker-engine hernoemd naar Docker Community Edition (afgekort tot Docker CE), maar in de officiële documentatie en Docker-repositories wordt nog steeds meestal de oude naam gebruikt. Naast Docker CE is er ook Docker Enterprise Edition (Docker EE), dat enkele premiumfuncties heeft. Dit is echter niet gratis en meer geschikt voor ondernemingen.
Met Docker-commando’s kunnen gebruikerssoftwarecontainers rechtstreeks vanaf de terminal worden gestart, gestopt en beheerd. De daemon wordt aangeroepen via het commando docker en instructies zoals build, pull of run. Client en server kunnen zich op hetzelfde systeem bevinden. Gebruikers hebben ook de mogelijkheid om toegang te krijgen tot een Docker-daemon op een ander systeem. Afhankelijk van het type verbinding dat tot stand wordt gebracht, verloopt de communicatie tussen de client en de server via de REST-API, via UNIX-sockets of via een netwerkinterface.
De volgende afbeelding illustreert de interactie tussen de afzonderlijke Docker-componenten met de voorbeeldopdrachten docker build, docker pull en docker run:

Het commando docker build geeft de Docker-daemon de opdracht om een image aan te maken (stippellijn). Hiervoor moet een bijbehorend Dockerfile beschikbaar zijn. Als de image niet moet worden aangemaakt, maar in plaats daarvan moet worden geladen vanuit een repository in de Docker-hub, dan wordt het commando docker pull gebruikt (stippellijn). Als de Docker-daemon via docker run wordt geïnstrueerd om een container te starten, controleert het achtergrondprogramma of de bijbehorende containerimage lokaal beschikbaar is. Als dat het geval is, wordt de container uitgevoerd (ononderbroken lijn). Als de daemon de image niet kan vinden, start hij automatisch een pull vanuit de repository.
Werken met Docker
Nu is het tijd om vertrouwd te raken met de containerplatformtoepassingen. Als u de Docker-engine nog niet hebt geïnstalleerd, kunt u dat doen via de Linux-terminal. Instructies hiervoor vindt u in ons artikel‘Docker installeren op Ubuntu 22.04’. Hieronder leert u hoe u de Docker-engine vanaf de terminal kunt bedienen, wat de Docker Hub voor u kan betekenen en waarom Docker-containers een revolutie teweeg kunnen brengen in de manier waarop u met applicaties werkt.
Hoe de Docker-engine te beheren
Sinds versie 16.04 gebruikt Ubuntu het achtergrondprogramma systemd(afkorting van ‘system daemon’) om processen te beheren.Systemd iseen init-proces dat ook wordt gebruikt op andere Linux-distributies zoals RHEL, CentOS of Fedora. Doorgaanskrijgt systemdhet proces-ID 1. Als eerste proces van het systeem is de daemon verantwoordelijk voor het starten, controleren en beëindigen van alle volgende processen. Voor eerdere Ubuntu-versies (14.10 en ouder) neemt hetachtergrondprogramma upstart deze functie over.
De Docker-daemon kan ook worden aangestuurd via systemd. In de standaardinstallatie is het containerplatform zo geconfigureerd dat de daemon automatisch start wanneer het systeem wordt opgestart. Deze standaardinstelling kan worden aangepast via het opdrachtregelprogramma systemctl.
Met systemctl verstuurt u commando’s naar systemd om een proces te besturen of de status ervan op te vragen. De syntaxis van een dergelijk commando is als volgt:
systemctl [OPTION] [COMMAND]bashSommige commando’s verwijzen naar specifieke bronnen (bijvoorbeeld Docker). In de terminologie van systemd worden deze units genoemd. In dit geval is het commando het resultaat van de betreffende instructie en de naam van de unit die moet worden aangesproken.
Als u de autostart van de Docker-daemon wilt activeren (inschakelen) of deactiveren (uitschakelen), gebruikt u het opdrachtregelprogramma systemctl met de volgende opdrachten:
sudo systemctl enable docker
sudo systemctl disable dockerbashMet het opdrachtregelprogramma systemctl kunt u de status van een eenheid opvragen:
sudo systemctl status dockerbashAls de Docker-engine op uw Ubuntu-systeem actief is, zou de uitvoer in de terminal er als volgt uit moeten zien:

Als uw Docker-engine momenteel is gedeactiveerd, krijgt u de statusmelding ‘inactief (dood)’. In dat geval moet u de Docker-daemon handmatig starten om containers uit te voeren.

Als u uw Docker-engine handmatig wilt starten, stoppen of herstarten, voer dan een van de volgende commando’s uit in systemd.
Om de gedeactiveerde daemon te starten, gebruikt u systemctl in combinatie met het commando start:
sudo systemctl start dockerbashAls de Docker-daemon moet worden beëindigd, gebruik dan in plaats daarvan het commando stop:
sudo systemctl stop dockerbashEen herstart van de motor wordt gevraagd met het commando restart:
sudo systemctl restart dockerbashHoe gebruik je de Docker Hub?
Als de Docker-engine het hart van het containerplatform vormt, dan is de Docker Hub de ziel van het open-sourceproject. Dit is waar de community samenkomt. In het cloudgebaseerde register vinden gebruikers alles wat ze nodig hebben om hun Docker-installatie tot leven te brengen.
De online dienst biedt diverse officiële repositories met meer dan 100.000 gratis apps. Gebruikers hebben de mogelijkheid om een beeldarchief aan te maken en deze gezamenlijk met werkgroepen te gebruiken. Naast de professionele ondersteuning door het ontwikkelingsteam kunnen beginners hier ook aansluiting vinden bij de gebruikersgemeenschap. Op GitHub is een forum voor communityondersteuning beschikbaar.

Registreren in de Docker Hub
Registratie bij Docker Hub is gratis. Gebruikers hebben alleen een e-mailadres en een zelfgekozen Docker-ID nodig. Dit dient later als persoonlijke repository-naamruimte en geeft gebruikers toegang tot alle Docker-services. Momenteel omvat dit aanbod naast de Docker Hub ook de Docker Cloud, Docker Store en geselecteerde bètaprogramma’s. Daarnaast kan de Docker-ID worden gebruikt om in te loggen bij het Docker Support Center, het Docker Success Portal en het Docker Forum.
Het registratieproces bestaat uit vijf stappen:
- Kies uw Docker-ID: Kies als eerste onderdeel van de aanvraag een gebruikersnaam die later als uw persoonlijke Docker-ID zal worden gebruikt.
- Voer een e-mailadres in: Voer uw huidige e-mailadres in. Houd er rekening mee dat u uw registratie bij Docker Hub via e-mail moet bevestigen.
- Kies een wachtwoord: Kies een geheim wachtwoord.
- Verstuur uw registratie: Klik op ‘Aanmelden’ om uw registratie te versturen. Zodra de gegevens volledig zijn verzonden, stuurt Docker een link naar uw opgegeven e-mailadres waarmee u uw e-mailadres kunt verifiëren.
- Bevestig uw e-mailadres: bevestig uw e-mailadres door op de verificatielink te klikken.
De online diensten van het Docker-project zijn direct beschikbaar nadat u zich in de browser hebt geregistreerd. Hier kunt u repositories en werkgroepen aanmaken of met ‘Explore’ in de Docker Hub zoeken naar openbare bronnen.

U kunt zich ook rechtstreeks aanmelden op de terminal van uw besturingssysteem via docker login. Een gedetailleerde beschrijving van het commando vindt u in de Docker-documentatie.
In principe is Docker Hub ook beschikbaar voor mensen zonder account of Docker ID. In dat geval kunnen echter alleen afbeeldingen uit openbare repositories worden geladen. Het uploaden (pushen) van je eigen afbeeldingen is niet mogelijk zonder een Docker ID.
Maak opslagplaatsen aan in de Docker Hub
Het gratis Docker Hub-account bevat één privé-repository en biedt de mogelijkheid om een onbeperkt aantal openbare repositories aan te maken. Als u meer privé-repositories nodig hebt, kunt u deze ontgrendelen met een betaalde upgrade.
Ga als volgt te werk om een repository aan te maken:
- Kies een naamruimte: Nieuw aangemaakte repositories worden automatisch toegewezen aan de naamruimte van uw Docker-ID. U kunt ook de ID invoeren van een organisatie waarvan u lid bent.
- Geef de repository een label: voer een naam in voor de nieuw aangemaakte repository.
- Voeg een beschrijving toe: voeg een korte beschrijving toe voor uw repository.
- Zichtbaarheid instellen: Bepaal of de repository openbaar zichtbaar moet zijn (openbaar) of alleen toegankelijk voor u of uw organisatie (privé).
Bevestig uw invoer door op ‘Aanmaken’ te klikken.

Teams en organisaties aanmaken
Met de hub biedt Docker een cloudgebaseerd platform waarop zelfgemaakte images centraal worden beheerd en gemakkelijk kunnen worden gedeeld met werkgroepen. In de terminologie van Docker worden deze ‘organisaties’ genoemd. Net als gebruikersaccounts krijgen organisaties individuele ID’s waarmee images kunnen worden aangeboden en gedownload. Rechten en rollen binnen een organisatie kunnen worden toegewezen via teams. Gebruikers die zijn toegewezen aan het team ‘Eigenaren’ hebben bijvoorbeeld de bevoegdheid om privé- of openbare repositories aan te maken en toegangsrechten toe te wijzen.
Werkgroepen kunnen ook rechtstreeks via het dashboard worden aangemaakt en beheerd. Meer informatie over organisaties en teams vindt u in de Docker-documentatie.
Werken met afbeeldingen en containers
Als eerste aanspreekpunt voor officiële Docker-bronnen is de Docker Hub ons startpunt voor deze inleiding tot het omgaan met images en containers. Het ontwikkelteam heeft de demo-image whalesay beschikbaar gesteld, die als basis zal dienen voor de volgende Docker-tutorial.
Docker-images downloaden
De whalesay- afbeelding is te vinden op de website van Docker Hub. Voer hiervoor de term whalesay in de zoekbalk naast het Docker-logo in.

Klik in de zoekresultaten op de bron met de titel docker/whalesay om toegang te krijgen tot de openbare repository voor deze afbeelding.
Docker-repositories worden altijd volgens hetzelfde patroon opgebouwd. In de koptekst van de pagina vinden gebruikers de titel van de afbeelding, de categorie van de repository en het tijdstip van de laatste upload (last pushed).

Elke Docker-repository biedt ook de volgende infoboxen:
- Beschrijving: Gedetailleerde beschrijving, meestal inclusief gebruiksaanwijzing
- Docker pull-commando: Commandoregelopdracht die wordt gebruikt om de image uit de repository te downloaden (
pull) - Eigenaar: Informatie over de maker van de repository
- Opmerkingen: Opmerkingenveld aan het einde van de pagina
Uit de informatievakken van de repository blijkt dat whalesay een aanpassing is van het open-source Perl-script cowsay. Het programma, ontwikkeld door Tony Monroe in 1999, genereert een ASCII-afbeelding in de vorm van een koe, die samen met een bericht in de terminal van de gebruiker verschijnt.
Om docker/whalesay te downloaden, gebruik je het commando docker pull:
docker pull [OPTIONS] NAME [:TAG|@DIGEST]bashHet commando docker pull geeft de daemon de opdracht om een image uit de repository te laden. U geeft aan om welke image het gaat door de titel van de image (NAME) in te voeren. U kunt Docker ook instructies geven over hoe het gewenste commando moet worden uitgevoerd (OPTIONS). Optionele invoer omvat tags (:TAG) en individuele identificatienummers (@DIGEST), waarmee u een specifieke versie van een image kunt downloaden.
Een lokale kopie van de docker/whalesay -afbeelding wordt verkregen met de volgende opdracht:
docker pull docker/whalesaybashOver het algemeen kunt u deze stap overslaan. Als u een container wilt starten, downloadt de Docker-daemon automatisch de images uit de repository die hij niet op het lokale systeem kan vinden.
Docker-images als containers starten
Om een Docker-image te starten, gebruikt u het commando docker run:
docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]bashHet enige verplichte onderdeel van het docker run -commando is de naam van de gewenste Docker-image. Maar wanneer u een container start, kunt u ook extra opties, TAG’s en DIGEST’s definiëren. Bovendien kan het docker run worden gecombineerd met andere commando’s die worden uitgevoerd zodra de container start. In dit geval wordt de CMD (COMMAND, gedefinieerd door de maker van de image en automatisch uitgevoerd wanneer de container wordt gestart) overschreven. Andere optionele configuraties kunnen worden gedefinieerd via aanvullende argumenten (ARG…). Dit maakt het bijvoorbeeld mogelijk om gebruikers toe te voegen of omgevingsvariabelen over te dragen.
Gebruik de opdrachtregelopdracht
docker run docker/whalesay cowsay boobashom het bestaande Perl-script als afbeelding te downloaden en in een container uit te voeren. Je zult zien dat whalesay aanzienlijk verschilt van het bronscript.

Als de afbeelding docker/whalesay wordt uitgevoerd, geeft het script een ASCII-afbeelding in de vorm van een walvis weer, evenals het tekstbericht ‘boo’, dat wordt doorgegeven met het cowsay- commando in de terminal.
Net als bij de testrun zoekt de daemon eerst naar de gewenste afbeelding in de lokale bestandsmap. Aangezien er geen pakket met dezelfde naam bestaat, wordt een pull uit de Docker-repository gestart. Vervolgens start de daemon het aangepaste cowsay-programma. Als dit is voltooid, wordt de container automatisch beëindigd.
Net als cowsay biedt ook whalesay van Docker de mogelijkheid om in te grijpen in de programmasequentie om de tekstuitvoer in de terminal te beïnvloeden. Test deze functie door bijvoorbeeld de ‘boo’ in het uitvoercommando te vervangen door een willekeurige tekenreeks of door een flauwe walvisgrap.
sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?bash
Alle Docker-images op het lokale systeem weergeven
Als u niet zeker weet of u een bepaalde afbeelding al hebt gedownload, kunt u een overzicht bekijken van alle afbeeldingen op uw lokale systeem. Gebruik de volgende opdrachtregelopdracht:
sudo docker imagebashHet commando docker images (alternatief docker image ls) geeft alle lokale afbeeldingen weer, inclusief bestandsgrootte, tag en afbeeldings-ID.

Als u een container start, wordt de onderliggende image als kopie gedownload uit de repository en permanent op uw computer opgeslagen. Dit bespaart u tijd als u de image later nog eens wilt gebruiken. Er wordt alleen een nieuwe download gestart als de bron van de image verandert, bijvoorbeeld als er een nieuwere versie beschikbaar is in de repository.
Alle containers op het lokale systeem weergeven
Als u een overzicht wilt weergeven van alle containers die op uw systeem draaien of in het verleden hebben gedraaid, gebruikt u de opdrachtregelopdracht docker ps in combinatie met de optie --all (afgekort: -a):
sudo docker ps -abash
De terminaloutput bevat informatie zoals de betreffende container-ID, de onderliggende afbeelding, het commando dat werd uitgevoerd toen de container werd gestart, het tijdstip waarop de container werd gestart en de status.
Als u alleen de containers wilt weergeven die momenteel op uw systeem worden uitgevoerd, gebruikt u de opdrachtregelopdracht docker ps zonder andere opties:
sudo docker psbashOp dit moment zouden er echter geen actieve containers op uw systeem moeten staan.
Docker-images maken
Onze Docker-tutorial heeft u niet alleen laten zien hoe u images in de Docker Hub kunt vinden, downloaden en uitvoeren op elk systeem waarop de Docker-engine is geïnstalleerd. Met Docker krijgt u niet alleen toegang tot het uitgebreide aanbod aan apps in het register. Het platform biedt ook een breed scala aan opties om uw eigen images te maken en deze te delen met andere ontwikkelaars.
In de inleidende hoofdstukken van deze Docker-tutorial heb je al geleerd dat elke Docker-image is gebaseerd op een Dockerfile. Je kunt Dockerfiles zien als een soort bouwsjabloon voor images. Dit zijn eenvoudige tekstbestanden die alle instructies bevatten die Docker nodig heeft om een image te maken. In de volgende stappen leer je hoe je dit type Dockerfile schrijft en Docker opdracht geeft om dit als basis voor je eigen image te gebruiken.
- Maak een nieuwe map aan: Het Docker-ontwikkelaarsteam raadt aan om voor elk Dockerfile een nieuwe map aan te maken. Mappen kunnen eenvoudig worden aangemaakt in de terminal van Linux. Gebruik de volgende opdrachtregel om een map met de naam mydockerbuild aan te maken:
mkdir mydockerbuildbash
- Navigeer in de nieuwe map: Gebruik het commando
cdom te navigeren in de nieuw aangemaakte werkmap.
cd mydockerbuildbash
- Nieuw tekstbestand aanmaken: Je kunt ook eenvoudig tekstbestanden aanmaken via de terminal met Ubuntu. Gebruik hiervoor een editor zoals Nano of Vim. Maak een tekstbestand aan met de naam Dockerfile in de map mydockerbuild.
nano Dockerfilebash
- Schrijf Dockerfile: Het nieuw aangemaakte tekstbestand dient als bouwplan voor uw zelfontwikkelde image. In plaats van de image helemaal zelf te programmeren, gebruiken we in deze Docker-tutorial de demo-image docker/whalesay als sjabloon. Deze wordt geïntegreerd met behulp van het commando FROM in uw Dockerfile. Gebruik de tag :latest om te verwijzen naar de nieuwste versie van de image.
FROM docker/whalesay:latestTot nu toe werkt docker/whalesay door woorden in zijn mond te leggen. In de terminal wordt de exacte tekst die u hebt ingevoerd weergegeven in combinatie met het commando om de container te starten. Maar het zou interessanter zijn als het script automatisch nieuwe tekstuitvoer zou genereren. Dit kan bijvoorbeeld worden gedaan met behulp van het fortunes-programma dat op elk Linux-systeem beschikbaar is. De basisfunctie van fortunes is het genereren van fortune cookie-uitspraken en humoristische aforismen. Gebruik de volgende opdracht om uw huidige lokale pakketindex bij te werken en fortunes te installeren:
RUN apt-get -y update && apt-get install -y fortunesDefinieer vervolgens een CMD- instructie. Deze wordt uitgevoerd na het RUN-commando, tenzij deze is overschreven door de call (docker run image CMD). Gebruik het volgende commando om het fortunes-programma uit te voeren met de optie -a (‘Kies uit alle databases’) en de uitvoer weer te geven via het cowsay- programma in de terminal:
CMD /usr/games/fortune -a | cowsayJe Dockerfile zou er als volgt uit moeten zien:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsayOpmerking: Commando’s in een Dockerfile worden altijd met enkele regelafstand geschreven en beginnen altijd met een trefwoord. De onderliggende syntaxis is niet hoofdlettergevoelig, dus het maakt niet uit of u hoofdletters of kleine letters gebruikt. Er is echter wel een consistente hoofdlettergebruik voor trefwoorden vastgesteld.

- Tekstbestand opslaan: Sla uw invoer op. Als u de Nano-editor gebruikt, slaat u het bestand op met de toetscombinatie [CTRL] + [O] en bevestigt u met [ENTER]. Nano geeft u de melding dat er drie regels naar het geselecteerde bestand zijn geschreven. Sluit de teksteditor met de toetscombinatie [CTRL] + [X].
- Afbeelding maken als Dockerfile: Om een afbeelding te maken op basis van een Dockerfile, navigeert u eerst naar de map waar het tekstbestand zich bevindt. Start het maken van de afbeelding met de opdrachtregelopdracht
docker build. Als u de afbeelding een individuele naam wilt geven of een tag wilt toevoegen, gebruikt u de optie-t, gevolgd door de gewenste combinatie van label en tag. Het standaardformaat isname:tag.
In het huidige voorbeeld moet een afbeelding met de naam docker-whale worden gemaakt:
docker build -t docker-whale .bashDe laatste periode geeft aan dat het onderliggende Dockerfile in de geselecteerde map is gevonden. U kunt ook een bestandspad of een URL voor de bronbestanden opgeven.
Het bouwproces begint zodra het commando wordt bevestigd met [ENTER]. Eerst controleert de Docker-daemon of hij alle bestanden heeft die hij nodig heeft om de image te maken. In Docker-terminologie wordt dit samengevat onder de term ‘context’.
Vervolgens bevindt de docker/whalesay -afbeelding met de tag :latest zich op:
Als de vereiste context voor het maken van de image al volledig aanwezig is, start de Docker-daemon de image-sjabloon die via FROM is gekoppeld in een tijdelijke container en gaat hij verder met de volgende opdracht in het Dockerfile. In het huidige voorbeeld is dit de RUN-opdracht, waardoor het fortunes-programma wordt geïnstalleerd.
Aan het einde van elke stap van het beeldcreatieproces geeft Docker u een ID voor de bijbehorende laag die in die stap is gemaakt. Dit betekent dat elke regel in het onderliggende Dockerfile overeenkomt met een laag van het beeld dat daarop is gebouwd.
Wanneer het RUN-commando is voltooid, stopt de Docker-daemon de container die ervoor is gemaakt, verwijdert deze en start een nieuwe tijdelijke container voor de laag van de CMD-instructie. Aan het einde van het aanmaakproces wordt deze tijdelijke container ook beëindigd en verwijderd. Docker geeft u de ID van de nieuwe image:
Successfully built a8f2048c9ab8
Je nieuw aangemaakte afbeelding is te vinden onder de naam docker-whale in het overzicht van je lokaal opgeslagen afbeeldingen.
sudo docker imagesbash
Om een container te starten vanuit uw nieuw aangemaakte image, gebruikt u de opdrachtregelopdracht sudo docker run in combinatie met de naam van de image:
sudo docker run docker-whalebashAls de afbeelding correct is gemaakt vanuit het Dockerfile, zou je walvis je nu moeten inspireren met min of meer wijze woorden. Opmerking: elke keer dat je de container opnieuw opstart, wordt er een nieuwe zin gegenereerd.

Tag Docker-images en upload ze naar Docker Hub.
Als u uw aangepaste docker-whale- image naar de hub wilt uploaden en beschikbaar wilt maken voor de community of een werkgroep, moet u deze eerst koppelen aan een repository met dezelfde naam in uw eigen persoonlijke naamruimte. In de Docker-terminologie wordt deze stap ‘tagging’ genoemd.
Om een afbeelding in de Docker Hub te publiceren, gaat u als volgt te werk:
- Maak een repository aan: Log in op de Docker Hub met je Docker-ID en persoonlijke wachtwoord en maak een openbare repository aan met de naam docker-whale.

- Bepaal de afbeeldings-ID: Bepaal de ID van uw aangepaste afbeelding docker-whale met behulp van de opdrachtregelopdracht
docker images.

In ons geval is de afbeeldings-ID a8f2048c9ab8. We hebben dit nodig voor het taggen in de volgende stap.
- Tag de afbeelding: Tag de docker-whale- afbeelding met behulp van het opdrachtregelprogramma
docker tagvolgens het volgende:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]bashVoor het huidige voorbeeld luidt de opdrachtregelrichtlijn voor tagging als volgt:
sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latestbashJe kunt controleren of je je afbeelding correct hebt getagd met behulp van het docker images -overzicht. De naam van de repository moet nu je Docker-ID bevatten.

- De afbeelding uploaden: Om de afbeelding te uploaden, moet u eerst inloggen op de Docker Hub. Dit kunt u doen met behulp van het commando
docker login.
sudo docker loginbashDe terminal vraagt je dan om je gebruikersnaam (Docker ID) en wachtwoord in te voeren.

Als het inloggen is gelukt, gebruik dan de opdrachtregelopdracht docker push om je afbeelding te uploaden naar de nieuw aangemaakte repository.
sudo docker push [Namespace]/docker-whalebashHet uploaden duurt slechts enkele seconden. De huidige status wordt weergegeven in de terminal.

Log in op de Docker Hub via de browser om de geüploade afbeelding te bekijken.
![Docker hub: The repository [Namespace]/docker-whale in the detailed view Afbeelding: Docker hub: The repository [Namespace]/docker-whale in the detailed view](https://guides.uicdn.net/fileadmin/_processed_/5/e/csm_docker-hub-push-result_56530d8ebc.webp)
Als u meer dan één afbeelding per repository wilt uploaden, gebruik dan verschillende tags om uw afbeeldingen in verschillende versies aan te bieden. Bijvoorbeeld:
[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2Een overzicht van de verschillende beeldversies is te vinden in de Docker Hub-repository onder het tabblad ‘Tags’.

Afbeeldingen van verschillende projecten moeten echter in aparte opslagplaatsen worden aangeboden.
Als het uploaden is gelukt, is je aangepaste afbeelding nu beschikbaar in de openbare repository voor alle Docker-gebruikers wereldwijd.
- Testrun: Test het succes van de upload door te proberen de afbeelding te downloaden.
Houd er rekening mee dat de lokale versie van de image eerst moet worden verwijderd om een nieuw exemplaar met dezelfde tag te kunnen downloaden. Anders meldt Docker dat de gewenste image al in de huidige versie aanwezig is.

Om de lokale Docker-image te verwijderen, gebruikt u de opdrachtregelopdracht docker rmi in combinatie met de bijbehorende image-ID. Deze wordt zoals gewoonlijk bepaald via docker images. Als Docker een conflict registreert, bijvoorbeeld omdat een image-ID in meerdere repositories wordt gebruikt of in een container wordt gebruikt, herhaalt u uw opdracht met de optie --force (afgekort*-f* ) om een verwijdering af te dwingen.
sudo docker rmi -f a8f2048c9ab8bash
Geef opnieuw een overzicht van alle lokale afbeeldingen weer:
sudo docker ImagesbashDe verwijderde elementen zouden niet meer in de terminaluitvoer moeten verschijnen. Gebruik nu het pull-commando in de repository om een nieuwe kopie van de image te downloaden van de Docker hub.
sudo docker pull [Namespace]/docker-whalebash
Aanvullende Docker-onderwerpen en tutorials
Het Docker-universum is groot en in de loop der tijd is er een levend ecosysteem ontstaan rond Docker-tools. Docker is vooral handig voor beheerders, vooral als ze complexe applicaties met meerdere containers parallel op verschillende systemen draaien. Docker biedt diverse functies voor het orkestreren van dit soort clusters. Meer informatie hierover vindt u in ons artikel over Docker-orkestratie met Swarm en Compose.
De digitale gids bevat aanvullende tutorials voor het werken met Docker:
- Een Docker-repository instellen
- Docker-container volumes
- Docker: back-up en herstel
- Docker installeren en uitvoeren op een Linux-server
- Docker Compose-handleiding
Docker is geschikt voor verschillende toepassingsscenario’s. In de digitale gids vindt u de volgende tutorials:
- WordPress implementeren in Docker-containers
- Een VPN uitvoeren in een Docker-container met SoftEther
- Nextcloud installeren met Docker
- Portainer installeren onder Docker
- Redis in Docker-containers
- Valheim Docker-server
Docker is niet altijd de beste keuze voor elke toepassing. Een van onze artikelen behandelt de populairste alternatieven voor Docker. Daarnaast hebben we veel artikelen beschikbaar waarin Docker wordt vergeleken met andere platforms:
- Kubernetes versus Docker
- Openshift versus Docker
- Podman versus Docker