Table des matières

Docker

Commandes de base

https://docs.docker.com/engine/reference/commandline/docker/

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

Relancer un service dans un container

Option 1 : se connecter dans le container et relancer avec systemctl

Option 2 :

  1. Se connecter dans le container
  2. Installer procps :
    apt-get update && apt-get install procps
  3. Faire un ps aux pour voire le PID du process à relancer
  4. 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. RTFMhttps://docs.docker.com/network/packet-filtering-firewalls/#restrict-connections-to-the-docker-host

Docker Compose

Installation

https://docs.docker.com/compose/install/

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

Docs

FAQ : https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop