Saviez-vous que le créateur de Docker était Français ? Solomon Hykes a même étudié à Epitech, il a rejoint le Panthéon des entrepreneurs à succès issu de la formation qui casse les codes.
Ultimately, our goal is to build the “button” that enables any code to instantly and consistently run on any server anywhere. - Solomon Hykes sur le Blog de Docker
Docker c'est avant tout un système tout en un pour faire des conteneurs applicatifs. Pour faire simple, avant Docker, les développeurs PHP devaient installer sur leur ordinateur tout l'environnement, avec un serveur MySQL, un serveur Apache etc... Et toutes les applications se partageaient le même environnement. Par exemple, dans la base de données, ils auraient eu sur le même serveur les tables de chaque application. Bref, il y a vite des effets de bords. Et si on veut monter une version sur une application, on la montait sur toutes les applications.
Avec Docker, ils ont un environnement bien isolé du reste. En quelques clics, cet environnement est fourni avec un serveur MySQL et un serveur Apache et le dev peut tester son code. Quand il change d'application, il relance un autre containeur qui aura sa propre base de données, tout est bien isolé.
Et puis Docker vient avec un système de DockerFile qui permet de décrire ce que le système va installer comme dépendance. Ça simplifie vachement le travail et on n'a plus besoin d'être expert UNIX pour tout installer. C'est pour ça qu'on dit parfois que Docker c'est le PHP du sysAdmin. C'est parce que le dimanche, tout le monde peut utiliser Docker pour faire des choses qui demandaient 3 ingénieurs d'habitude.
Ce qui est pratique, c'est qu'une image Docker qui marche sur la machine du Dev, on peut l'envoyer sur le Cloud facilement. Alors il y a encore plein d'outils comme Docker Swarm (ou Kubernetes).
Docker a surtout popularisé l'utilisation des conteneurs. Un conteneur applicatif permet d'isoler une application pour qu'elle soit sur le même serveur qu'une autre. Cela permet de partager les ressources, CPU et mémoire, facilement. D'ailleurs Docker repose sur LXC pour faire ce partage de ressources.
En vrai le plus souvent on va éviter de faire ça. Les Ops vont trouver un moyen de reprendre l'application et de la déployer sans Docker, pour plein de raisons pratiques. Mais Docker reste indispensable dans l'environnement d'un développeur web aujourd'hui.
Si vous n'avez jamais utilisé ou entendu parler de Docker je vous recommande deux vidéos sur Youtube :