Installation de Docker sur Debian

# Ajout des éléments nécessaire à l'installation
sudo apt update
sudo apt -y install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# Ajout du dépôt permettant d'installer Docker
mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Update la liste des packages et installation de Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Par défaut, Docker requiert des privilèges root. Pour exécuter des commandes sans recourir systématiquement à sudo, il suffit d’ajouter votre utilisateur au groupe docker.

sudo usermod -aG docker ${USER}

Arrêter tous les conteneurs:

docker stop $(docker ps -a -q)

Supprimer tous les conteneurs:

docker rm $(docker ps -a -q)

Entrer dans un contenur en cours d’exécution:

docker exec -it -u [utilisateur (optionnel)] [conteneur] 

Copier un ficher depuis l’hôte vers le conteneur:

docker cp <fichier sur l'hôte à copier> <conteneur>:/<dossier du conteneur>/

Exécuter une commande sur le conteneur

docker exec -u root <conteneur> <commande>

Voir l’id utilisateur exécutant le conteneur

docker exec -ti <conteneur> id 

Build une image

Créer une image à partir d’un Dockerfile

docker build -t mon_image:v1 .

Configurer les logs de Docker dans /var/log

le paquet rsyslog doit être installé

Ajouter dans le fichier /etc/docker/daemon.json

/etc/docker/daemon.json
{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "udp://127.0.0.1:514",
    "tag" : "docker/{{.ImageName}}"
  }
}

Modifier dans le fichier /etc/rsyslog.conf

Dans la section provides UDP syslog reception, il faut activer le listen en local:

/etc/docker/daemon.json

module(load="imudp")
input(type="imudp" port="514" Address="127.0.0.1")

Dans la section global directives:

/etc/docker/daemon.json

$PreserveFQDN on

Creer ensuite le fichier /etc/rsyslog.d/10-docker.conf

/etc/rsyslog.d/10-docker.conf

$FileCreateMode 0644
$template DockerDaemonLogFileName,"/var/log/docker/docker.log"
$template DockerContainerLogFileName,"/var/log/docker/%SYSLOGTAG:R,ERE,1,FIELD:docker/(.*)\[--end:secpath-replace%.log"
if $programname == 'dockerd' then {
?DockerDaemonLogFileName
stop
}
if $programname == 'containerd' then {
?DockerDaemonLogFileName
stop
}
if $programname == 'docker' then {
if $syslogtag contains 'docker/' then {
?DockerContainerLogFileName
stop
}
}
$FileCreateMode 0600

Redémarrer ensuite le service docker et rsyslog

Vos logs vont maintenant apparaitre dans /var/log/docker/