Table des matières
Docker
Commandes de base
https://docs.docker.com/engine/reference/commandline/docker/
- Lister toutes les images présentes sur la machine :
docker image ls
- Lister tous les container lancés :
docker container ls
- Lister tous les containers même les expirés :
docker container ls --all
- Stopper un container :
docker container stop ID_IMAGE
- Supprimer tous les containers éteints :
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
Installation
Script d'installation de Docker : https://github.com/docker/docker-install/blob/master/install.sh
Utilisation
Création d'une image
Limite de pulls
Pour un user sans authentification sur Docker hub, il y a un plafond glissant de 100 pulls toutes les 6h et par IP. Il est possible de connaître le quota de pulls restant :
TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token) curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest
https://docs.docker.com/docker-hub/download-rate-limit/#how-can-i-check-my-current-rate
Gestion des containers
- Ouvrir un bash dans un container :
docker exec -ti nom_du_container_ou_ID bash
- Copier du contenu dans un répertoire du container :
docker cp fichier/dossier nom_container:repertoire/container
- Connaître l'espace disque utilisé par les containers, volumes et images :
docker system df -v
Relancer un service dans un container
Option 1 : se connecter dans le container et relancer avec systemctl
Option 2 :
- Se connecter dans le container
- Installer procps :
apt-get update && apt-get install procps
- Faire un ps aux pour voire le PID du process à relancer
- Relancer le service avec kill :
kill -USR2 PID_SERVICE
Firewall
Lors de son déploiement, Docker met en place des règles Iptables pour aiguiller le trafic qui lui est destiné. Ces règles passent par la table FORWARD sans passer la table FILTER. Donc cela court-circuite les éventuels filtres mis en place.
Il est donc essentiel de limiter le bind des container à 127.0.0.1 pour éviter qu'ils ne soient accessibles publiquement.
Il est possible également de modifier les règles Iptables de Docker pour interdire le trafic ne venant pas de telle ou telle adresse. RTFM ⇒ https://docs.docker.com/network/packet-filtering-firewalls/#restrict-connections-to-the-docker-host
Docker Compose
Installation
Utilisation
Commandes de base : https://docs.docker.com/compose/reference/
Docker file v3 : https://docs.docker.com/compose/compose-file/
Les containers sont comme des mini VM à part entière. Leur mise en réseau se fait via DHCP. Ils peuvent être connectés entre eux via DNS interne. Par exemple, pour lier un container Nginx et un container PHP, mettre dans le vhost.conf en location php “fastcgi_pass php:9000”
Lancer docker-compose et faire afficher le code de retour d'un service :
docker-compose up --exit-code-from SERVICE