Ga naar hoofdinhoud

Online zetten: Docker op de server

Hier bouw je op verder: Een dienst herstarten met systemctl

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Op je laptop draait alles in Docker. Op de server doe je hetzelfde, met dezelfde bestanden. Je typt de commando's in deze stap op de server, als sam.

Docker op de server​

Installeer Docker zoals in les 13, en zet sam in de groep docker zoals in les 14:

sudo apt update
sudo apt install docker.io docker-compose-v2 docker-buildx git
sudo usermod -aG docker sam
exit

Log opnieuw in met ssh, zodat de groep telt. Op de server zit alleen sam in die groep: wie erin zit, is bijna root.

Logboeken met een grens​

Docker bewaart alles wat een container print, en je site print een regel voor elke bezoeker. Zonder grens groeit dat logboek maanden door, tot de schijf vol is en je site stopt. Geef Docker een grens voordat je de eerste container start:

sudo nano /etc/docker/daemon.json
{
"log-driver": "local"
}

Let op de aanhalingstekens en de komma's: met een fout in dit bestand start Docker niet meer (zie Er gaat iets mis). Start Docker daarna opnieuw, en kijk of hij de instelling kent:

sudo systemctl restart docker
docker info --format '{{.LoggingDriver}}'

Er staat local. Die manier van bewaren houdt per container hoogstens vijf bestanden van 20 MB bij, en gooit het oudste weg als ze vol zijn. Hij geldt alleen voor containers die Docker daarna maakt. Daarom doe je het nu, voordat er een container is.

Controlevraag
Je zet daemon.json pas als je site al een maand draait, en herstart Docker. docker info zegt local. Heeft het logboek van je site nu een grens?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Er gaat iets mis​

Job for docker.service failed​

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

Oorzaak: er zit een fout in /etc/docker/daemon.json, en dan start Docker niet. Met sudo journalctl -u docker zie je welke:

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid JSON: invalid character '}' looking for beginning of object key string

Hier staat een komma te veel achter de laatste regel. JSON is strenger dan Python: een komma alleen tussen twee regels, en aanhalingstekens altijd dubbel.

Oplossing: verbeter het bestand met sudo nano /etc/docker/daemon.json, en start Docker opnieuw met sudo systemctl restart docker.

permission denied while trying to connect to the docker API​

Oorzaak: sam zit nog niet in de groep docker, of je logde daarna niet opnieuw in.

Oplossing: typ exit, log opnieuw in met ssh, en kijk met groups of docker erbij staat.

Door naar les 31: je project ophalen.