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.