Docker-containers worden gemaakt op basis van Docker-installatie kopieën. Docker haalt deze images standaard uit Docker Hub, een Docker-registry beheerd door Docker, het bedrijf achter het Docker-project. Iedereen kan zijn Docker-images hosten op Docker Hub, dus voor de meeste applicaties en Linux-distributies die je nodig hebt, worden daar images gehost.
Om te controleren of je images kunt openen en downloaden van Docker Hub, typ je:
docker run hello-world
De uitvoer geeft aan dat Docker correct werkt:
Output
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:95ddb6c31407e84e91a986b004aee40975cb0bda14b5949f6faac5d2deadb4b9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Docker kon de hello-world
image aanvankelijk niet lokaal vinden, dus heeft het de afbeelding gedownload van Docker Hub, de standaardrepository. Nadat de afbeelding was gedownload, heeft Docker een container gemaakt van de afbeelding en de applicatie binnen de container uitgevoerd, waarbij het bericht wordt weergegeven.
Je kunt zoeken naar images die beschikbaar zijn op Docker Hub door de docker
opdracht met de search
subopdracht te gebruiken. Om bijvoorbeeld naar de Ubuntu-afbeelding te zoeken, typ je:
docker search ubuntu
Het script crawlt door Docker Hub en retourneert een lijst met alle images waarvan de naam overeenkomt met de zoekreeks. In dit geval ziet de uitvoer er ongeveer zo uit:
Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 11806 [OK]
dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 497 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 267 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 250 [OK]
consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 232 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 110 [OK]
neurodebian NeuroDebian provides neuroscience research s… 79 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components=m… 44 [OK]
open-liberty Open Liberty multi-architecture images based… 42 [OK]
i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 24
nuagebec/ubuntu Simple always updated Ubuntu docker images w… 24 [OK]
1and1internet/ubuntu-16-apache-php-5.6 ubuntu-16-apache-php-5.6 14 [OK]
In de OFFICIËLE kolom geeft OK een afbeelding aan die is gebouwd en ondersteund door het bedrijf achter het project. Als je eenmaal de image hebt geïdentificeerd die je wilt gebruiken, kun je deze met de pull
subopdracht naar je computer downloaden .
Voer de volgende opdracht uit om de officiële ubuntu
afbeelding naar je computer te downloaden :
docker pull ubuntu
Je ziet de volgende output:
Output
Using default tag: latest
latest: Pulling from library/ubuntu
83ee3a23efb7: Pull complete
db98fc6f11f0: Pull complete
f611acd52c6c: Pull complete
Digest: sha256:703218c0465075f4425e58fac086e09e1de5c340b12976ab9eb8ad26615c3715
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Nadat een image is gedownload, kun je een container uitvoeren met behulp van de gedownloade image met het run
subcommando. Zoals je in het hello-world
voorbeeld hebt gezien, zal de Docker-client eerst de image downloaden en vervolgens een container gebruiken als er geen image is gedownload wanneer deze docker
wordt uitgevoerd met het run
subcommando.
Om de image te zien die naar je computer zijn gedownload, typ je:
docker images
De uitvoer ziet er als volgt uit:
Output
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest f63181f19b2f 3 weeks ago 72.9MB
hello-world latest bf756fb1ae65 13 months ago 13.3kB
Zoals je later in deze les zult zien, kunnen images die je gebruikt om containers uit te voeren, worden gewijzigd en gebruikt om nieuwe images te genereren, die vervolgens kunnen worden geüpload (pushed is de technische term) naar Docker Hub of andere Docker-registers.
Laten we eens kijken hoe je containers in meer detail kunt uitvoeren.