## Werken met Docker-images

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.