User Tools

Site Tools


informatique:logiciels:docker

This is an old revision of the document!


Docker

Ceci est un pense-bête en vrac. Il peut contenir des erreurs.

Installation

Documentations

Généralités

Il faut être root pour utiliser docker.

# afficher l'arborescence de la conf d'un composant, par ex le réseau (sh conf)
docker inspect bridge
# afficher la conf d'un conteneur
docker inspect pihole
# n'afficher qu'un paramètre de sa conf :
docker inspect -f "{{.State.Health.Status}}" pihole-dogen

B.-A.-BA

Vérification de la version :

docker version
Client: Docker Engine - Community
 Version:           27.1.2
 API version:       1.46
 Go version:        go1.21.13
 Git commit:        d01f264
 Built:             Mon Aug 12 11:51:13 2024
 OS/Arch:           linux/amd64
 Context:           default
 
docker compose version
 Engine:
  Version:          27.1.2
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.13
  Git commit:       f9522e5
  Built:            Mon Aug 12 11:51:13 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.20
  GitCommit:        8fc6bcff51318944179630522a095cc9dbf9f353
 runc:
  Version:          1.1.13
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Test de création d'un conteneur témoin

docker run hello-world

Conteneurs

Création d'un conteneur Alpine Linux (Linux minimaliste)

docker run -it alpine
# -i interactif -t on rattache le terminal
 
# lancer un shell dans le conteneur alpine
docker exec -ti alpine sh

Action sur les conteneurs

# démarrer arrêter un conteneur
docker start alpine
docker stop alpine
 
# suppr un conteneur
docker rm (-f) <conteneur1> (-f pour forcer même s'il est en fonctionnement)
 
# lister les conteneurs
docker ps # (ou docker container ls)
 
# pour lister aussi les conteneurs arrêtés
docker ps -a

Volumes

docker volume ls
docker volume create monvolume
docker volume rm monvolume

Gestion des logs

# afficher les logs d'un conteneur:
# -f/--follow ; -t/--timestamps ; -n/--tail
docker container logs --follow <ID>
docker logs -f -t --details <Nom_du_conteneur>
# filtrer les logs sur un créneau horaire (ici affiche les logs du 11 mars)
docker logs -t --since 2023-03-11 --until 2023-03-12 --details <conteneur>
docker logs -t --since 1h30m --details <conteneur>
# par def, les logs des conteneurs sont dans /var/lib/docker/containers/
# supprimer les logs d'un conteneur :
: > $(docker inspect --format='{{.LogPath}}' <nom ou ID du conteneur>)

Images

# lister les images
docker images
(ou docker image ls)
# créer image à partir d'un conteneur
docker commit -m "hello image v1" <containerID> firstimage:v1.0
docker history <ID_image> (afficher l'historique des cmds passées dans l'image)

Build

#docker build
mkdir -p mon_serveur_web && cd $_
echo "<html><body>Hello world!</body></html>" > index.html
echo -e "FROM nginx\n\
COPY index.html /usr/share/nginx/html/index.html" > Dockerfile
docker build -t mon_serveur_web
# on le lance en bindant le port 8888 du host sur le 80 du conteneur
docker run -p 8888:80 mon_serveur_web:latest
-> http://localhost:8888

network

# lister les réseaux (loopback) créés dans docker
docker network ls

Compose

docker compose: permet de créer et ordonnancer de multiples conteneurs pour monter un service (site web + BDD + etc) ; il utilise des fichiers yml pour définir le service

# https://docs.docker.com/compose/gettingstarted/
mkdir nextcloud && cd nextcloud
docker-compose.yml <------ contient la description du service
# création de la stack
# run your services in the background with the -d flag (for "detached" mode)
docker-compose up -d
# afficher les logs
docker-compose logs -f
# arrêter le conteneur
docker-compose down
!
docker compose pull ?

Exemples

Lancer un pihole sur le serveur Windows ; depuis un shell WSL:

docker run -d \
--name=pihole-win \
--hostname pi.hole \
-p 80:80 \
-e WEBPASSWORD=MDP4cc3sInterfaceWeb \
-e DNSMASQ_LISTENING=local \
-e PIHOLE_DNS_=10.0.1.65 \
-e TZ=FR \
-v pihole_dnsmasq.d:/etc/dnsmasq.d \
-v pihole_pihole:/etc/pihole \
--restart=unless-stopped \
pihole/pihole:latest

MAJ le conteneur avec la dernière version de pihole:

# dl la dernière version de l'image
docker pull pihole/pihole
# arrêter le conteneur courant
docker container stop pihole-win
# supprimer le conteneur courant
docker rm -f pihole-win
! lancer le nouveau conteneur
docker run <ARGS> pihole/pihole

Divers

Outils liés à docker:

informatique/logiciels/docker.1724066631.txt.gz · Last modified: 2024/08/19 11:23 by pteu