Docker

Docker begrijpen: containers, images en volumes

Docker heeft een paar begrippen die je maar één keer hoeft te leren. Daarna begrijp je elke handleiding die ermee werkt.

De vier begrippen

  • Image: het “pakket” van een programma, zoals een installatiebestand. Je haalt het op van een openbare opslag, meestal Docker Hub. Een image verandert niet.
  • Container: een draaiend exemplaar van een image. Je kunt er meerdere van één image starten. Verwijder je een container, dan zijn de gegevens erin ook weg.
  • Volume: een plek waar gegevens bewaard blijven, buiten de container. Hierin zet je alles wat je wilt houden: instellingen, databases en bestanden.
  • Netwerk: de verbinding tussen containers en de buitenwereld.

Je eerste container

Start een webserver die op poort 8080 van je computer bereikbaar is:

docker run -d --name web -p 8080:80 nginx

Open daarna http://je-server:8080 in je browser. Wat betekent het commando?

  • -d: draai op de achtergrond (detached).
  • --name web: geef de container een naam.
  • -p 8080:80: poort 8080 van je computer verwijst naar poort 80 in de container. Links staat altijd de poort op je eigen machine, rechts die in de container.
  • nginx: de image. Hij wordt automatisch gedownload als hij er nog niet is.

Heb je een docker run-opdracht uit een handleiding en wil je er een bestand van maken? Gebruik onze tool Docker run naar Compose.

De belangrijkste opdrachten

docker ps                 # draaiende containers
docker ps -a              # alle containers, ook gestopte
docker logs -f web        # logboek volgen (Ctrl+C om te stoppen)
docker exec -it web sh    # een terminal in de container openen
docker stop web           # stoppen
docker start web          # weer starten
docker rm web             # verwijderen (gegevens in de container zijn dan weg)
docker images             # alle images op je computer
docker pull nginx         # de nieuwste versie van een image ophalen
docker volume ls          # alle volumes
docker system df          # hoeveel ruimte Docker gebruikt

Gegevens bewaren: volumes en mappen

Zonder volume verdwijnen je gegevens als je de container verwijdert of vervangt, bijvoorbeeld bij een update. Er zijn twee manieren:

  • Bind mount: een map van je eigen computer. Handig omdat je de bestanden zelf kunt zien en een back-up kunt maken. Voorbeeld: -v /opt/web:/usr/share/nginx/html.
  • Named volume: Docker beheert de plek zelf. Voorbeeld: -v webdata:/usr/share/nginx/html.

Automatisch herstarten

Wil je dat een container na een herstart van de server of een crash vanzelf weer opstart? Voeg --restart unless-stopped toe aan je docker run-opdracht. Hij blijft alleen uit als jij hem zelf stopt.

Containers laten praten

Containers in hetzelfde zelf aangemaakte netwerk vinden elkaar op naam: een app kan een database bereiken op db in plaats van een IP-adres. Met Docker Compose gaat dat vanzelf. Lees daarom verder bij Docker Compose.

Lukt het niet zelf? Laat een expert bij je thuis langskomen via hulpaanhuis.nl