Démarrez un conteneur nginx
:
docker run -d --rm --name web-srv -p 8080:80 nginx
Logs de conteneur
Lorsqu'un conteneur se comporte d'une manière innatendue, l'un des premiers réflexes à avoir est de regarder les logs:
On peut afficher les logs avec la commande logs
suivie du nom du conteneur:
docker logs web-srv
[output]172.17.0.1 - - [06/Dec/2019:15:49:00 +0000] "GET / HTTP/1.1" 200 29 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0" "-"
[output]172.17.0.1 - - [06/Dec/2019:15:49:42 +0000] "GET /something HTTP/1.1" 404 153 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0" "-"
[output]2019/12/06 15:49:42 [error] 6#6: *1 open() "/usr/share/nginx/html/something" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /something HTTP/1.1", host: "localhost:8080"
Détecter des changements
Lorsqu'un problème survient, il peut s'agir d'un changement dans le système de fichiers du conteneur: modification de fichier, suppression d'un dossier, ...
Docker permet de lister les différences entre l'image originale et l'état du conteneur avec la commande diff
:
docker diff web-srv
[output]C /run
[output]A /run/nginx.pid
[output]...
Plusieurs lettres préfixent chaque ligne:
Lettre | Signification |
---|---|
A |
added: fichier/dossier ajouté |
D |
deleted: fichier/dossier supprimé |
C |
changed: fichier/dossier modifié |
Processus et ports
Listez le mapping des ports d'un conteneur avec la commande port
:
docker port web-srv
[output]80/tcp -> 0.0.0.0:8080
Listez les processus en cours dans un conteneur:
docker top web-srv
[output]UID PID PPID C STIME TTY TIME CMD
[output]root 13641 13608 0 16:48 ? 00:00:00 nginx: master process nginx -g daemon off;
[output]systemd+ 13690 13641 0 16:48 ? 00:00:00 nginx: worker process
Lire la configuration d'un conteneur
Pour obtenir la configuration complète d'un conteneur, utiliser la commande inspect
qui renverra du JSON:
docker inspect web-srv
[output][
[output] {
[output] "Id": "23825eac26c270d54bb86c3152b034a1a865353d0eeb98eb98ed067addd0fba5",
[output] "Created": "2019-12-06T15:48:53.906908049Z",
[output]...
Il est possible de formatter l'affichage en utilisant un template Go.
Exemple: affichage des adresses MAC et IPv4 du conteneur.
docker inspect --format='MAC: {{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}} | IP: {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web-srv
[output]MAC: 02:42:ac:11:00:02 | IP: 172.17.0.2