Skip to main content

Cheatsheet | Docker

Docker provides the ability to package and run an application in a loosely isolated environment called a container.
The isolation and security allows you to run many containers simultaneously on a given host. Containers are lightweight and contain everything needed to run the application, so you do not need to rely on what is currently installed on the host. You can easily share containers while you work, and be sure that everyone you share with gets the same container that works in the same way.

Ressources

Lab : Kodekloud 

Documentation

commandes générales

start the docker daemon

docker -d

help / manuel docker --help 
display system wide info docker info

Gestion de containers

runtime instance of an image

démarrer un conteneur arrêté
docker start <containerName>
redémarrer un conteneur
docker restart <containerName>
arrêter un conteneur
docker stop <containerName>
mettre en pause un conteneur
docker pause <containerName>
reprendre un conteneur
docker unpause <containerName>
afficher les logs pour debug


docker logs -f <containerName>
details sur le conteneur démarré

 

docker inspect <containerName> 
# ou
docker inspect <contName> | grep APP_COLOR #ajout de couleur pour lisibilité 
# ou
docker inspect <contName> | grep APP_COLOR -B1 -A1 #ajout 1 ligne avant & après le résultat
ressource utilisé par le conteneur

docker container stats

supprimer un conteneur stoppé

docker rm conteneur

supprimer tous les conteneurs stoppés

docker container prune

supprimer tous les conteneurs
⚠ inclut ceux qui run

 docker rm -f $(docker ps -aq)

create & run container from image with a custom name

docker run --name containerName imageName

run container & publiser its port(s) to the host

docker run -p <hostPort>:<container:port> <imageName>

open shell in running container

docker exec -it <containerName> sh

afficher les conteneurs démarrés docker ps
possible d'afficher les arrêtés aussi avec -a (pour all)
afficher l'ID des conteneurs utilisant une image X (not running)

docker container ls -a -q --filter "ancestor=x"

 

possible d'ajouter d'autres filtres 

docker container ls -a -q --filter "ancestor=x" --filter "status=exited"

detail d'un container

docker inspect <id>

  • possible de filtrer docker inspect <id> | grep APP_COLOR
  • possible d'ajouter -B1 -A1 après le grep pour ajouter une ligne avant et après le résultat pour plus de clarté et trouver le résultat facilement


Gestion d'images 

lister les images dispo localement docker images
pull une image docker pull imageName
exec une image  docker run imageName
( -d to detach —name to name it)

build an image from a dockerfile 

docker build -t <imageName> .

build an image from a dockerfile without the cache 

docker build -t <imageName> . -no-cache

Trouver le base OS pour une image x 

docker run --rm x cat /etc/os-release (exemple x = python:3.6)

supprimer 1 image

docker rmi imageName

delete all images (if a running cont is using image, conflict = need to remove cont)

docker rmi -f $(docker images -aq)

supprimer toutes les images non utilisées

docker image prune



    hub

    service par Docker pour trouver et partager des images

    log in docker login -u <username>

    publish docker push <username>/<imageName>

    get docker pull <imageName>

    Nettoyage

    Les commandes prune ne suppriment jamais les conteneurs en cours d’exécution, seulement ceux arrêtés ou les objets « non utilisés ». 

    Utiliser sans -f pour voir les warning mais besoin de l'ajouter dans les scripts car non interractifs. 

    Supprimer tous les conteneurs arrêtés
    exclut les conteneurs qui tournent

    docker container prune
    docker container prune --filter "until=24h"   # plus vieux que 24h

    Supprimer les images « dangling »
    (sans tag, sans référence)

    docker image prune

    ⚠ Supprimer toutes les images non utilisées par un conteneur ⚠

    docker image prune -a
    docker image prune -a --filter "until=2024-01-01T00:00:00"   # plus anciennes qu’une date

    Volumes inutilisés (non attachés à un conteneur)
    ⚠ à la perte de données (DB, etc.) 

     

     

    docker volume prune

     

    Réseaux non utilisés 

    docker network prune

    Nettoyage global (conteneurs arrêtés, images inutilisées, réseaux inutilisés, build cache)

    docker system prune
    docker system prune -a              # inclut toutes les images non utilisées
    docker system prune -a --volumes    # inclut aussi les volumes inutilisés (danger)