Containers
Nous utilisons des containers d'image OCI (Open Container Initiative), orchestré par Docker.
Les containers sont tous les même, mais le système qui les fait fonctionner, Docker, pourrait être remplacer par des projets comme Podman, Nerdctl ou Lilipod, par exemple.
Nous penchons pour Podman, notamment pour les containers rootless.
Installation
Repository d'images
Attention au fautes de frappes1.
Maintenance
Zombies
Regularly check that containers whose services have either moved or been removed, are not still running
# List containers running. docker compose ls # Kill a container that should not still be running. # The <id> is found in the list above. docker kill <id>
Pruning
Docker takes a conservative approach to cleaning up unused objects (often referred to as "garbage collection"), such as images, containers, volumes, and networks. These objects are generally not removed unless you explicitly ask Docker to do so. This can cause Docker to use extra disk space. For each type of object, Docker provides a prune command. In addition, you can use docker system prune to clean up multiple types of objects at once.
Mise à Jours
Commandes
# arrête et enlève le container docker compose down # récupère la dernière image comme indiqué dans le docker-compose. yml # Souvent `latest` docker compose pull # recrée le container d'après la dernière image locale (qu'on a avec pull) # -d/--detach permet de lancer le service en arrière plan. docker compose up -d
Procéssus
Nous avons pour l'instant identifier deux façons de mettre à jours un container docker:
down>pull>up -dpull>up -d
La différence notable entre les deux approches est que la deuxième version permet d'éviter de recréer les contenaires pas mis à jour tandis que la première approche retire tout et repart de zéro, guardant bien sur les data qui étaient dans les volumes.
Nous utilisons la deuxième méthode.
Détails sur up
Cette commande recréer le container sous plusieurs conditions :
- Une versions plus récente de l'image
- Des changements au fichiers de configurations (image/tag, networks, entrypoints, env variables, port mappings, volume mounts, restart policies et labels)
Troubleshooting
Network
Connecté un container à un autre via URL
Utilisez nom_du_container:port.
internal=true
Si un network est internal=true, le container qui n'a que ce network n'aura pas accès à internet.
- Apparament,
ghrc.ioest malicieux. Attention au fautes de frappes → ghrc.io Appears to be Malicious Brandon Mitchell