<!-- title: Les containers -->

# Docker

## docker-compose.yml

Concaténation de *docker-compose.yml* :

    # composition de docker-compose
    # si ficher d'environnement ajouter --env-file submodule/A_SUB_PROJECT/.env 
    docker-compose -f submodules/A_SUB_PROJECT/docker-compose.yml config > _tmp_.A.yml
    docker-compose -f submodules/B_SUB_PROJECT/docker-compose.yml config > _tmp_.B.yml
    docker-compose \
    -f _tmp_.A.yml \
    -f _tmp_.B.yml \
    config > docker-compose.yml
    rm _tmp_.*.yml

Gérer les *docker-compose.yml* des sous-répertoires comme un seul avec une fonction bash

    docker-compose ()
    {
        /usr/local/bin/docker-compose $(find -name 'docker-compose*.yml' -type f -printf '%p\t%d\n'  2>/dev/null | sort -n -k2 | cut -f 1 | awk '{print "-f "$0}') $@
    }

Mettre à jour toutes les images 

    docker compose pull && docker compose up -d

## Manipuler les images

Construire depuis le répertoire du Dockerfile

    docker build -t srmail .

Lister les images :

    docker images

Supprimer une image :

    docker rmi <image id>

Lister les containers actifs:

    docker ps

Lister tous les containers :

    docker ps -a

Supprimer un container

    docker rm <container id>

Construire et démarrer un container en interactif

    docker run --name srmail_trunk -ti srmail /bin/bash

Démarrer et stopper un container

    docker start <container id or name>
    docker stop <container id or name>

Démarrer et attacher une console

    docker start srmail_trunk
    docker attach --sig-proxy=false srmail_trunk
    # sortir avec CTRL p + CTRL q

Exécuter une commande dans un container

    docker exec srmail_trunk ps -ef
    docker exec -i -t 665b4a1e17b6 /bin/bash

Inspecter le file system d’une image

    docker run --rm -it 044e1532c690 sh 

## Publier ses images 

Après la construction de l'image on peut la publier :

    docker build -t tcpping .
    
Se connecter à la registry Docker (hub.docker.com)

    docker login --username=kianby

Retrouver l’id de l’image

    docker images

Tagguer l’image et pousser vers Docker Hub

    docker tag f5a6531f8874 kianby/tcpping
    docker push kianby/tcpping

Variation avec une version autre que latest

    docker tag 87615e686d1f kianby/hugo:0.31.1

# Buildah

Construire une image depuis une URL 

    buildah build -t www-madyanne:latest github.com/kianby/docker-image-www-madyanne

Lister les images 

    buildah images

Stockage local dans *~/.local/share/containers*
