Conclusion
Conclusions sur l’écosystème Docker
- La nature facile à déployer des conteneurs et l’intégration du principe d’Infrastructure-as-Code les rend indispensable dans de la CI/CD (intégration continue et déploiement continu).
- Les principaux outils de CI sont Gitlab, Jenkins, Github Actions, Travis CI…
- Gitlab propose par défaut des runners préconfigurés qui utilisent des conteneurs Docker et tournent en général dans un cluster Kubernetes.
- Gitlab propose aussi un registry d’images Docker, privé ou public, par projet.
- Les tests à l’intérieur des conteneurs peuvent aussi être faits de façon plus poussée, avec par exemple Ansible comme source de healthcheck ou comme suite pour les tests.
- Dans une autre catégorie, Gitpod base son workflow sur des images Docker permettant de configurer un environnement de développement
Gérer les logs des conteneurs
Avec Elasticsearch, Filebeat et Kibana… grâce aux labels sur les conteneurs Docker
Gérer le reverse proxy
Avec Traefik, aussi grâce aux labels sur les conteneurs Docker
Monitorer des conteneurs
- Avec Prometheus pour Docker et Docker Swarm
- Ou bien Netdata, un peu plus joli et configuré pour monitorer des conteneurs out-of-the-box
Tests sur des conteneurs
Ansible comme source de healthcheck
Bonnes pratiques et outils
Sécurité / durcissement
-
un conteneur privilégié est root sur la machine !
-
des cgroups correct : ulimit -a
-
par défaut les user namespaces ne sont pas utilisés !
-
le benchmark Docker CIS : https://github.com/docker/docker-bench-security/
-
La sécurité de Docker c’est aussi celle de la chaîne de dépendance, des images, des packages installés dans celles-ci : on fait confiance à trop de petites briques dont on ne vérifie pas la provenance ou la mise à jour
- Clair : l’analyse statique d’images Docker
-
docker-socket-proxy : protéger la socket Docker quand on a besoin de la partager à des conteneurs comme Traefik ou Portainer
Limites de Docker
Stateful
- les conteneurs stateless c’est bien beau mais avec une base de données, ça ne se gère pas magiquement du tout
- Réseaux “overlay”: IP in IP, VXLAN…
- …mais on a rapidement besoin de plugins exclusifs à Kubernetes : Calico, Flannel, Canal (Calico + Flannel), Cilium (qui utilise eBPF)
Volumes distribués
- problème des volumes partagés / répliqués
- domaine à part entière
- Solution 1 : solutions applicatives robustes
- Solution 2 : volume drivers avec Docker
- Flocker, Convoy, visent à intégrer une technologie de réplication
- c’est un moyen, pas une solution : reste un outil pour configurer ce que l’on souhaite
Aller plus loin
- Le livre Mastering Docker, de Russ McKendrick et Scott Gallagher
- les ressources présentes dans la bibliographie
- la liste de Awesome Docker
Dockercraft : administrez vos containers dans Minecraft
Retours
- Comment ça s’est passé ?
- Difficulté : trop facile ? trop dur ? quoi en particulier ?
- Vitesse : trop rapide ? trop lent ? lors de quoi en particulier ?
- Attentes sur le contenu ? Les manipulations ?
- Questions restées ouvertes ? Nouvelles questions ?
- Envie d’utiliser Docker ? ou de le jeter à la poubelle ?