Annexe 1 : Quelques considérations techniques sur Docker

Configurer le proxy dans les fichiers Dockerfile

Ajouter les variables d'environnement au début du fichier Dockerfile :

# Set proxy
ENV http_proxy http://proxy.sipr.ucl.ac.be:889
ENV https_proxy http://proxy.sipr.ucl.ac.be:889
ENV no_proxy localhost,127.0.0.0,127.0.1.1,127.0.1.1,local.home

Alternativement cela peut être fait dans les fichiers docker-compose.yml, voici un exemple :

services:
  <service_name>:
    # ...
    environment:      
      HTTP_PROXY: 'http://host:port'
      HTTPS_PROXY: 'http://host:port'
      NO_PROXY: 'localhost, 127.0.0.1'
      # autres variables d'environnement ...

Proxy, VIP de sortie et Rate Limit sur Docker Hub

Il y a de plus une limite de 100 pulls par 6h pour un utilisateur anonyme. Le proxy risque donc d'assez vite atteindre cette limite.

Il faudra donc :

  1. le désactiver le proxy dès que les machines peuvent sortir via le port 80 et 443
  2. à terme prendre un abonnement https://www.docker.com/pricing/
  3. une fois le problème résolu, le proxy peut-être ré-activé

NB : une solution de proxy plus pérenne doit encore être mise en place côté SIPR

Le même problème peut également se poser avec la VIP de sortie de haproxy qui est unique pour tous les services situés derrière celui-ci. L'idéal serait d'avoir une VIP de sortie par projet afin d'éviter tout problème de type rate limit ou max connection sur des services tiers.

Configuration complète du daemon

{
  "storage-driver": "overlay2",
  "log-driver": "syslog",
  "debug": false,
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true,
  "insecure-registries" : [ "<HOSTNAME DU REGISTRY>:5000" ]
}

Quelques variables d'environnement de Docker

  • DOCKER_HOST : chemin (url ou socket unix) utilisé pour se connecter à l'API de Docker. Par défaut, la valeur est unix://var/run/docker.sock. Autres protocoles supportés : tcp://<host>:port et ssh://<user>@<host> (Docker 18.04+)
  • DOCKER_API_VERSION : version de l'PI Docker utilisée sur l'hôte. Par défaut c'est la version la plus récente supportée par Docker-Py.
  • DOCKER_TIMEOUT : timeout pour les appaels à l'API
  • DOCKER_CERT_PATH : chemin du répertoire contenant le certificat client, celui du CA, ainsi que la clé privée du client
  • DOCKER_SSL_VERSION : version SSl utilisée
  • DOCKER_TLS : sécuriser les connexions à l'API en TLS sans vérifier l'authenticité de l'hôte Docker
  • DOCKER_TLS_VERIFY : sécuriser les connexions à l'API en TLS et vérifier l'authenticité de l'hôte Docker