Wat is Docker Hub en hoe gebruik je het?

Auteur: Gepubliceerd

In het kort: Docker Hub is een online register voor container-images: een plek waar je kant-en-klare pakketten kunt downloaden om applicaties te starten en je eigen pakketten kunt publiceren. Het wordt onder meer gebruikt door ontwikkelaars die een webserver, database of testomgeving nodig hebben zonder alle onderdelen handmatig te installeren. Docker Hub slaat images op, maar voert je applicatie niet zelf uit. Dat doet de containeromgeving op je computer of server.

Image, container en Docker Hub: wat is het verschil?

Een container-image is een pakket met een applicatie, de benodigde bibliotheken en de configuratie om deze te starten. Een container is een draaiende instantie van zo’n image: hij heeft eigen processen en een geïsoleerde omgeving, maar deelt doorgaans de systeemkernel met de host. Met één image kun je meerdere containers aanmaken.

Docker is een verzameling tools om containers te bouwen en uit te voeren. Docker Hub is een afzonderlijke dienst die de images ervan opslaat en beschikbaar stelt. Je kunt het vergelijken met een magazijn met kant-en-klare pakketten: je kiest een pakket, downloadt het en voert de inhoud vervolgens in je eigen omgeving uit.

Een PostgreSQL-image bevat bijvoorbeeld de onderdelen die nodig zijn om een databaseserver te starten. Dat betekent echter niet dat Docker Hub de gegevens van je database opslaat. Die gegevens ontstaan terwijl de container draait. Je moet apart regelen dat ze blijvend worden opgeslagen, bijvoorbeeld in een volume: opslagruimte die onafhankelijk is van de levenscyclus van de container.

Wat vind je in een image-repository?

Een repository in Docker Hub is een verzameling images die onder een gezamenlijke naam worden gepubliceerd. Deze kan verschillende applicatieversies, omgevingsvarianten en images voor verschillende processorarchitecturen bevatten. Openbare repository’s zijn toegankelijk voor andere gebruikers; toegang tot private repository’s wordt beperkt met toegangsrechten.

Het adres van een image heeft meestal de vorm account/naam:tag. Een tag is een label dat een bepaalde variant of versie aanduidt, bijvoorbeeld bedrijf/applicatie:1.4. Voor images uit het programma Docker Official Images wordt vaak een kortere naam gebruikt, zoals nginx:stable.

Zoek op de repositorypagina vooral naar startinstructies, ondersteunde tags, vereiste omgevingsvariabelen en informatie over gegevensopslag. Alleen de image downloaden is niet genoeg als de applicatie een wachtwoord, netwerkconfiguratie of aanvullende diensten nodig heeft.

Een tag is geen onveranderlijke identificatie: de uitgever kan er een nieuwere image aan koppelen. Dat geldt ook voor het label latest. Dit garandeert niet dat je de nieuwste versie volgens de versienummering krijgt, en evenmin dat die het meest stabiel is. Als je bij opeenvolgende uitrolmomenten precies dezelfde image nodig hebt, kun je de digest opgeven: een cryptografische identificatie van de inhoud.

Hoe download en start je een image uit Docker Hub?

Voor een eenvoudige test moet Docker geïnstalleerd zijn en werken, bijvoorbeeld via Docker Desktop of Docker Engine. Je hebt niet voor elke download uit een openbare repository een account bij Docker Hub nodig, al kunnen authenticatie en de limieten van de dienst invloed hebben op de toegang.

Het volgende voorbeeld start een Nginx-server, een programma dat webverkeer afhandelt:

docker pull nginx:stable
docker run --name test-nginx -d -p 127.0.0.1:8080:80 nginx:stable

Het eerste commando downloadt de image. Het tweede maakt een container met de naam test-nginx en start deze op de achtergrond dankzij de optie -d. De notatie 127.0.0.1:8080:80 maakt poort 80 van de container beschikbaar via poort 8080, uitsluitend op de lokale interface van de computer.

Open http://localhost:8080 in je browser om de welkomstpagina van de server te bekijken. Stop en verwijder de container na de test:

docker stop test-nginx
docker rm test-nginx

Het commando docker run kan een ontbrekende image zelf downloaden. Een afzonderlijk docker pull is dus niet altijd nodig. Door beide stappen te laten zien, wordt het verschil duidelijk tussen het downloaden van het pakket en het starten van de applicatie.

Hoe kies je images en beperk je de risico’s?

Een container-image is code die je in je eigen omgeving uitvoert. De populariteit van een repository is geen vervanging voor het controleren van de uitgever, de documentatie en het onderhoud van het project. Het label Docker Official Images helpt je images te herkennen die onder dit programma vallen, maar garandeert niet dat ze vrij zijn van kwetsbaarheden.

Controleer voordat je een image gebruikt:

Sla geen wachtwoorden, API-sleutels of private certificaten op in een image die je publiceert. Als je een bestand pas in een latere bouwstap verwijdert, kan de inhoud ervan in een eerdere laag van de image achterblijven. Ook een private repository hoort niet als opslagplaats voor geheimen te dienen.

Wanneer publiceer je eigen images en wat controleer je vóór de uitrol?

Een eigen repository is handig als je dezelfde applicatieversie aan je team wilt doorgeven of op verschillende servers wilt uitrollen. Doorgaans bouw je een image op basis van een Dockerfile-bestand, log je in met docker login, geef je de image een naam die bij de repository past en upload je deze met het commando docker push.

Docker Hub is niet het enige register voor images. Een organisatie kan een andere dienst of een eigen register gebruiken als ze specifieke toegangsregels, integraties of controle over de opslag van artefacten nodig heeft.

Controleer vóór de uitrol in de officiële documentatie van Docker Hub de actuele downloadlimieten, de voorwaarden van het abonnement en de beschikbaarheid van private repository’s. Begin voor je eerste project met een lokale test van één betrouwbare image. Leg daarna de gekozen versie en de startconfiguratie vast, zodat je de omgeving opnieuw kunt opzetten.

Zie ook: Wat betekent www?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.