https://www.youtube.com/watch?v=b5NwUbyjLFo
Docker - PrésentationDocker est un projet OpenSource permettant de créer facilement des environnements de développement ou de production facilement transportable et exploitable.
Les développeurs de Docker sont Français, et il s'agit de quelque chose que j'aime à souligner. Car si aujourd'hui Docker est connu dans le monde entier, ce n'est pas grâce aux Français, mais plutôt aux Américains qui ont permit à ce projet d'aboutir en investissant dedans.
Docker ne fonctionne à l'heure actuel que sous Linux, même s'il existe des moyens détournés de le faire tourner sur Windows ou MacOs, il ne s'agit dès lors que de machines virtuelles.
Le prérequis principale pour faire fonctionner de manière correct Docker sur son environnement linux, est de posséder un Kernel au moins supérieur à la 3.8.13
Docker est un système de packaging qui permet de prendre n'importe quel code source, n'importe que application, et de l'envelopper avec toutes ses dépendances dans un objet unique qu'on peu déplacer sur n'importe que serveur linux.
Chose importante, il n'est à ce jour pas possible de créer un container d'applicatifs Windows. Cependant, Microsoft travaillerais actuellement la dessus.
Docker se base sur LXC pour 'Linux Container' qui est un système de virtualisation et permet de faire fonctionner des environnements Linux isolés les uns par rapport aux autres, mais partageant le même noyau. Les conteneurs apportent la virtualisation de l'environnement (Processeur, Mémoire, Réseau etc...), mais pas de la machine.
Attention cependant, Docker n'est pas une Machine Virtuel, vous ne pourrez pas avoir de Bureau.
Il n'est pas non plus un remplaçant de Chef, Puppet ou Ansible, qui pour ceux qui ne connaissent pas, sont des gestionnaires de configuration de machines.
Alors pourquoi utiliser Docker ?
Nous l'utiliserons principalement pour automatiser le packaging et le déploiement d'application. Il permet de faire de l'intégration continue, test automatisé etc.. le tous sans interruption de service. On peu passer d'un système de développement à un système de production sans coupure en quelques clics. Et surtout, il permet le déploiement d'applications Scalable.
Comme on peu le voir, avec les Machines Virtuelles, nous avons pour chaque machines, un système d'exploitation complet et virtualisé, avec son kernel (noyau), ses dépendances, sont réseau etc...
Chaque machine pèse alors facilement quelques Go de données. Contrairement à Docker qui lui ne se contente que de virtualiser la partie applicative en isolant le tout. Du coup, les conteneurs ne contiennent que le strict minimum vu que les librairies sont partagées entre l'hôte et les conteneurs. Par conséquent, le poids s'en vois extrêmement réduit. Il est donc facile de partager un conteneur sur la toile. Du plus, de part son système d'images, il n'y a pas de duplication de données.
De façon basique une image contient tout ce que docker à besoin pour faire fonctionner les conteneurs alors que le conteneur est la version exécutée dune image Docker.
Cependant la force de Docker réside dans le fait que l'on n'utilise pas seulement une image pour créer un container, mais que c'est l'empilement de plusieurs de celle-ci qui permette de constituer une cible.
En prenant le shéma du site de Docker on retrouve le bootfs géré par le Kernel et donc pas l'OS lui même.
Au dessus nous avons une image de base, il s'agit de la base d'environnement désiré, ici Debian, mais cela pourrait RedHat Fedora Centos etc...
Encore au dessus, nous ajoutons des images, une pour nginx, une pour Mysql, une pour php-Fpm etc..., c'est en assemblant toutes ces images et en les exécutants que nous créons un conteneur dédié à l'application souhaité.
Grossièrement, Docker permet de rendre portable vos applications développées dans n'importe quel langage, sans se soucier des divers dépendances dont à besoin votre application pour tourner.
Un autre point important, il permet de faire facilement de la gestion de projet et de switcher de l'un à l'autre sans problème.
Docker n'est cependant pas un remplaçant complet des machines virtuels. Vous pouvez toujours avoir besoin d'un environnement complet virtualisé pour des tests particulier, voir même pour virtualiser plusieurs dockers.
Docker fonctionnant en bas, directement avec le Kernel, il n'existe pas d'outils de supervision comme on peu avoir avec les VM, je pense notamment à Proxmox, Archipel ou oVirt.
Docker - Part 1 Installation et commandes de base
Docker - installation et commandes de baseIl faut bien prendre en compte que Docker ne s’installe que sur un environnement linux. Si vous êtes sur Windows ou Mac suivez le tutoriel Docker- Installation sur Windows.
Par la suite, que vous vous trouviez sur Debian, Ubuntu, Centos ou autre, la façon d'installer Docker reste sensiblement la même. Je vous conseil tous de même de visiter le site de docker qui liste les procédures d'installation pour chaque distribution linux : Installation supportée.
De manière général, la plupart d'entre vous serez sur une base Debian, les commandes pour l'installation sera donc la suivante :
$ sudo apt-get update
$ sudo apt-get install docker.io
Attention, il existait déjà un package nommé docker su Debian, ce dernier est utilisé par Gnome, c'est pour cela que le package correspondant à Docker est docker.io
Une fois l'installation terminé, il est intéressant de permettre aux utilisateurs d'un groupe particulier d'utiliser Docker, car à ce stade, seul root à accès et peu contrôler Docker.
Autoriser les utilisateurs à utiliser DockerTous d'abord, on créer un nouveau groupe, si ce dernier n'existe pas, on l'appelera de façon simple docker.
$ sudo groupadd docker
Si cette commande vous retourne l'info comme quoi le groupe existe déjà, ce n'est pas grave.
Maintenant nous ajoutons simplement les utilisateurs qui aurons le droit d'utiliser Docker sans pour autant être root.
$ sudo gpasswd -a renouveaux docker
-a ajoute un utilisateur à un groupe.
Il ne reste plus qu'a redemarrer Docker pour que les changements soient pris en compte correctement.
$ sudo service docker restart
"ou"
$ sudo service docker.io restart
"on active les changements à l'utilisateur connecté"
$ newgrp docker
newgrp n'est pas obligatoire, si vous ne le faite pas, il faut simplement se déconnecter de la session et se reconnecter pour que l'attribution du groupe soit bien prise en compte.
Vous allez forcement avoir besoin de docker-compose pour la réalisation de fichier de lancement automatique.
$ sudo curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
Cela lancera le téléchargement de docker-compose automatiquement en fonction de votre système linux.
Rendons maintenant docker-compose exécutable
$ sudo chmod +x /usr/local/bin/docker-compose
Testons maintenant si tous c'est bien déroulé.
$ docker --version
Docker version 1.6.2, build 7c8fca2
$ docker-compose --version
docker-compose version: 1.4.0
Voilà, si vous n'avez aucune erreur, alors vous allez pouvoir commencer à utiliser Docker dans de bonnes conditions.
Les premières commandesVoici quelques commandes à bien connaître sous Docker car ce sont celles qui seront le plus souvent utilisées. Vous vous rendrez compte rapidement que Docker c'est largement inspiré de GIT car les commandes sont complètement identique, mais font aussi exactement la même chose.
Il est possible de récupérer à tous moment une image en faisant un simple PULL.
$ docker pull debian
Cette simple commande lancera le téléchargement de la dernière image de Debian, la latest. Si vous souhaitez avoir une version en particulier, il faut le préciser. Par exemple, si je souhaite travailler sur la version Wheezy, il faudra faire le pull suivant :
$ docker pull debian:7.8
La commande RUN permet de lancer un conteneur, c'est la partie la plus intéressante de Docker, puisque c'est grâce à elle que vous allez faire vivre vos applications.
La commande se lance classiquement, docker run [le nom de l'image] [une commande]
Par exemple pour faire un 'Hello World'
$ docker run debian /bin/echo 'Hello World'
Hello World
Ceci lance un nouveau conteneur faisant un simple echo de Hello World.
Poussons la chose avec des paramètres. les premiers à connaitre sont le t et le i.
Le drapeau i permet de garder ouvert le canal d'entrée sortie, en gros, permet de recevoir le retour visuel du shell et d'envoyer des commandes. Nous ajoutons cependant toujours le drapeau t avec afin d'avoir le visuel d'un shell, ce que l'on appel le terminal.
le rm lui permet de détruire le conteneur à la sortie de ce dernier.
$ docker run -ti -rm debian bash
Vous êtes maintenant dans un conteneur, dans lequel vous pouvez faire ce que vous souhaitez, ce conteneur sera détruit dès que la commande exit sera tapée.
Attention, le drapeau rm est à mettre quand vous souhaitez faire des tests, avec ce drapeau, tous ce que vous ferez sera perdu en quittant le conteneur.
Toujours en restant dans le run, on va lancer un conteneur en mode deamon qui fait toujours un simple Hello World, mais ce coup si en Python et sur une page web.
$ docker run -d -P training/webapp python app.py
Le drapeau d lance le container en deamon ou en tache de fond, cela veux dire que tant qu'un processus tourne dans le conteneur, ce dernier reste exécuté. Le drapeau P quand à lui permet de mapper les ports du conteneurs à un ou plusieurs ports, de manière aléatoire sur l'hôte. La commande suivante vous retournera la liste des ports disponible.
$ docker ps
Dans la ligne de résultat, la colonne port devrais ressembler à ceci
0.0.0.0:49153->5000/tcp
Si maintenant vous vous rendez sur votre navigateur web et que vous saisissez l'adresse ip de la machine docker, celle qui exécute Docker avec le port 49153, http://localhost:49153 vous aurez un joli Hello World!.
Il est aussi possible d’arrêter, ou de relancer un conteneur à partir de son nom ou de son id. Via la commande docker ps précédente, nous avions 2 colonnes intéressante : CONTAINER ID et NAMES. Vous pouvez utilisez l'un ou l'autre cela n'à pas d'importance, de plus, pour l'id, il n'est pas obligatoire de mettre tous les chiffres, souvent les 3 ou 4 premiers suffisent à être unique pour identifier le bon conteneur.
La commande STOP arrête un container, mais ne le supprime pas, il permet de d'arrêter le conteneur comme s'il s'agissait d'un simple service.
La commande PAUSE est un peu plus particulière, car elle sauvegarde l'état du conteneur tel qu'il est à l'instant de la commande. Elle est principalement utilisé lors d'un bug sur l'application, on place le conteneur en pause, on publie ce conteneur dans l'état dans lequel il possède le bug, ce qui nous donne la possibilité de relancer des centaines de tests sur cette seule erreur.
La commande START permet de relancer un container arrêté ou mis en pause.
Et enfin, Restart permet bien entendu de redémarrer un conteneur.
PS est une simple commande rapide pour lister les conteneurs existants.
$ docker ps
' Retourne la liste des conteneurs actif.
$ docker ps -a
' Retourne tous les conteneurs, actifs, en pause ou arrêtés.
$ docker images
' Vous retourne toutes les images téléchargées
RM et RMI sont les dernières commandes que nous verrons ici. Elles servent respectivement à supprimer un conteneur ou une image. Attention cependant, il n'est pas possible sans forcer de supprimer un conteneur actif ou une image utilisée par un conteneur. Si le conteneur que l'on souhaite supprimer est en route, il faut ajouter le drapeau f, idem pour l'image. Il est aussi possible de supprimer plusieurs conteneur en même temps ou plusieurs images en même temps. La forme reste la même pour les deux commandes.
$ docker rm -f conteneur1 conteneur2 conteneur3 ....
$ docker rmi debian:latest debian:7.8 ubuntu training/webapp ....
Comme vous l'aurez remarqué, Docker est assez simple à prendre en main, dans le sens ou les commandes sont intuitives. De plus, ces dernières sont identique au git comme dit au début de cet article, ce qui évite des confusions. Nous verrons prochainement d'autre commandes comme le commit et le push qui permettent comme pour git de publier ses propres conteneurs.
Dans cette nouvelle partie, je vous propose un exemple d'utilisation de docker de manière à ce que vous compreniez comment faire discuter les conteneurs entre eux, mais aussi un exemple d'utilisation concret.
Docker - Liaison entre conteneurs
Dans le principe, nous avons 3 conteneurs utile:
Pour savoir qui doit se lier à qui, il faut se poser la question, qui demande les informations à qui, et à qui on donne des informations de connexion à qui.
Prenons l'exemple de php et Mysql, c'est dans notre code Php que nous mettons les informations de connexion à la base de donnée, donc c'est php qui appel Mysql et non l'inverse, ce qui signifie que votre conteneur mysql doit être lancé en premier.
De la même avec nginx, c'est nginx qui fait appel à Php, donc php doit être lancé avant nginx.
Enfin, nous utilisons un conteneur phpMyAdmin (optionnel) pour un exemple supplémentaire et pour faciliter le tuto.
Voici la configuration de nginx
daemon off;
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
sendfile off;
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass phpServeur:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /srv/http$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
}
Je vous donne aussi le fichier yml pour l'utilisation avec fig
mysqlServeur:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=secretPassword
phpServeur:
image: jprjr/php-fpm
volumes:
- /c/Users/Tyller/Docker/projet_tuto/web/:/srv/http
links:
- mysqlServeur:mysql
ports:
- 9000:9000
webServeur:
image: nginx
links:
- phpServeur:phpServeur
volumes:
- /c/Users/Tyller/Docker/projet_tuto/web/:/usr/share/nginx/html
- /c/Users/Tyller/Docker/projet_tuto/conf/nginx.conf:/nginx.conf
ports:
- 80:80
command: nginx -c /nginx.conf
phpmyadmin:
image: corbinu/docker-phpmyadmin
environment:
- MYSQL_USERNAME=root
ports:
- 8080:80
links:
- mysqlServeur:mysql
Il est fortement recommandé à ce que vous retapiez le code en place d'un copier collé. En faisant du simple copié collé, vous ne comprenez ce que vous faite, en tapant les lignes de code, vous assimilerez plus facilement les informations qu'elles contiennent.
Afin de partager vos dossiers présent dans des disques dur autre que votre disque principal, regardez cette vidéo.
docker - Partage de fichiers avec Windows
Pour Info, Docker nécessite un noyau récent >= 3.14
et pour les archi arm, passez votre chemin
Huggy, tu à raison ou presque. En effet pour utiliser Docker il faut un noyau linux récent, comme tu le dit 3.14, pourquoi, tous simplement parceque lxc est inclus dans linux à partir de ce noyau. Si tu prend Centos 6.6, le noyau est en 2.6 et pourtant docker fonctionne. En réalité quand on install docker-io sur Centos 6.6, on install en même temps lxc, ce qui permet de faire fonctionner Docker sur des noyaux antérieur.
Je ne sais pas si cette particularité est aussi présente sur les autre distrib Linux, tel que Debian ou Ubuntu.
Salut @Tyller,
Tu devrais proposer ce tuto à @Graf' afin qu'il puisse le publier dans sa section "Tutoriels" :)
Super tuto qui m'aura appris pleins de choses
j'espère qu'il y aura une suite .
Lors d'une conférence sur Docker, organisée par OVH , les questions fusaient
je vous rapporte ici les principales
Pour ma part je n'utilise qu'une image debian et je construis mes autres images à partir de fichiers Dockerfile pris sur le dépot,
car sur le dépot on peut prendre soit l'image soit le Dockerfile
ça permet de controler ce qu'on met dedans et d'y rajouter un apt-get udate et upgrade qui va bien.
Il suffit de regénérer les images de temps en temps et on a des images à jour.
Je pars du principe qu'il ne faut rien stocker dans les conteneurs, il faut sortir les fichiers de conf, les datas et les logs.
Dans le tuto, la base mysql est dans le conteneur, je suppose que ce n'est pas réaliste (rien que pour les backups)
Je vois aussi des images d'outils web comme Wordpress, phpmyadmin , j'avoue que j'ai du mal à saisir l'intérêt car on doit travailler avec un volume externe !!! dans le tuto le conteneur phpmyadmin a son propre serveur web et son propre php ça fait double emploi.
dans le tuto les volumes sont montés en Read Only, là aussi ça doit poser problème dans la réalité (upload de fichiers par exemple).
Je n'utilise pas boot2docker car mettre des containers dans une VM ça commence à faire trop, et comme le but est de rendre ça opérationnel sur un dédié Linux donc autant travailler sur du Linux directement.
Il faut bien expliquer l'objectif de Docker : c'est pour faciliter le boulot des admin system. Les dev font des containers et les admin n'ont plus qu'a les déposer sur le serveur. (en théorie)
Ca fait plaisir de voir que des gens sont interessés aux tutos.
Huggy, oui, il y'aura une suite, je vais avancer Dockerfile, docker-compose et ajouter des petites vidéos astuces comme pour le partage de fichier avec windows.
Pour ta première question, la réponse est très simple, il suffit d'utiliser la commande exec de docker pour balancer une commande à un conteneur sans s'y connecter.
Donc sur un conteneur avec une base debian, si tu souhaite faire un apt-get update, alors :
docker exec <Nom du conteneur> apt-get update -y
La seconde question est un poil plus complexe à expliquer, pourra faire l'objet d'un toute petite vidéo.
Pour l'organisation des conteneurs et des fichiers de configue, oui, le mieux étant de complètement sortir toutes les données de ses conteneurs et de faire en sorte que ce soit les conteneurs qui s'attaches aux fichiers de configue, de la même façon que l'exemple avec le fichier de conf de nginx.
Docker est toujours en développement, et promet encore de supers nouveautés à venir, donc les tutos ne sont pas finit.
Merci pour l'info sur la commande 'exec', je vais tester ça
Si j'ai bien compris, on lance la commande d'update, ce qui met à jour le conteneur mais pas l'image.
C'est pas risqué de lancé des commandes en aveugle ?
En cas de crash, on perd la maj ?
Faut-il dans ce cas arréter le container juste après la maj pour l'avoir en cache ?
Pour le mapping d'IP, je pense à l'utilisation des IPFailover (pour info une ipFailover est une adresse IP que l'on peut basculer d'un serveur à un autre, ça permet de basculer un site d'un serveur A vers un serveur B sans avoir à jouer avec les DNS)
Huggy, oui quand tu utilise la commande exec, tu ne t'attaque que à un seul conteneur. Donc avec la commande update ca ne touchera pas ton image.
Risqué de lancer des commandes à l'aveugle, non, dans le sens ou normalement tu ne touche que au conteneur en question, et comme normalement tes fichiers de conf sont ailleurs si tu plante ton conteneur c'est pas trop grave, tu en relance un dans la volé, après c'est sûr que en environnement de production, c'est le genre de chose que tu évite. Ensuite il est plus que extrèmement rare d'avoir à faire des mises à jour à la volé de cette façon.
Non, il ne faut pas arreter le container, ce que tu fait dessus est permanent, si tu lance la commande update, ca mettra à jour des choses dans ton conteneur. Si tu le relance, il aura ces mise à jours présente, par contre, si tu le supprime, tu perd tout.
Et c'est pareille en cas de plantage, les conteneur sont écrit en dure, donc s'il crash, il reprendra là ou il en était.
Pour le mapping, IpFailover est plutôt fait pour des serveurs physique ou virtuels ayant chacun une adresse ip différente. Dans le cas de docker, l'acces aux conteneur ne se fait que par le biais d'une seule adresse ip, celle de la machine hôte. IpFailOver ne sera donc pas judicieux.
Si tu veux pouvoir faire de la bascule ente conteneur, par exemple, passer un conteneur en prod en hors ligne et mettre le conteneur de dev en prod, tu préfèrera utiliser un système de loadBalancing. Dans ce cas, par exemple tu à le conteneur A qui fait du web et est en prod, le port mappé sur le 80 est le 8080. Le conteneur B est celui en cours de dev, il est finit et peu passer en prod, sont port 80 est lui mappé sur le 8081.
Dans ton gestionnaire de loadBalancing, tu indiquera simplement que le site toto.super.com n'est plus mappé sur le 8080 mais en 8081, pour les clients, ils accèdent toujours au site de la même façon, par contre le branchement de ton nouveau conteneur est instantané, et surtout sans interruption.
Mlais, il s'agit d'une partie que j'évoquerais surement dans une vidéo avec à mon avis l'utilisation de Varnish pour ce cas, je sais pas encore je verrais.
Une question conternant le tuto sur les liaisons entre conteneurs : pourquoi est-ce que tu mets ton projet dans /srv/http
, dans le container jprjr/php-fpm
? Il me semblait que nginx était le seul qui en avait besoin.
Comme expliqué sur le Chat IRC, nginx ne fait que transposé dans informations au serveur http. Nginx n'est pas fait pour envoyer des fichiers au serveurs php, simplement lui dire, tient faut que tu traite le fichier s'appelant toto.
C'est la raison pour laquel nous devons aussi monter le volume sur le serveur php.
Je vous propose aujourd'hui un nouveau tuto sur docker. Il y'a du mouvement chez Docker, et ceux qui n'ont pas suivit, c'est assez énorme. En tous cas, je vous présente ici suite à la mise à jour de boot2docker, docker-compose.
Cela enterre le tuto sur Fig. Esperant que cela vous plaise.
Docker - docker-compose
Hello les gens, je reviens avec une nouvelle vidéo sur Docker pour vous présenter le Dockerfile cette fois ci. Ce fichier vous permet en effet de créer des images de base qui vous sont propre. Vous pouvez ensuite les publier sur le hub de Docker, ou sur github/bitbucket pour ensuite être directement compilé par le Docker Hub.
Docker - Le Dockerfile
Bonjour,
J'effectue actuellement un stage dont le sujet principal est Docker.
Je suis complétement amateur dans le domaine.
Je voudrais débuter une mise en pratique avec Docker.
En fait, nous allons déployer une VM via un portail de provisionning et par la suite la question est d’installer Docker dessus pour pouvoir installer des conteneurs applicatifs du style Mysql, Java, Apache etc… afin créer des environnements web ou de développement rapidement et de façon standardisée.
La question est donc : Que faut-il faire quand je déploie une nouvelle VM en RHEL 6.5 ou CentOS pour que l’on puisse installer un conteneur dessus ?
Les binaires à déployer ?
Les fichiers à configurer ?
etc…
Merci beaucoup pour votre aide :)
Mettre Docker dans un VM ça marche ca ?
Y a bien des gens qui tirent une remorque derrière leur caravane, mais bon !!!
Je sais qu'il y a boot2docker qui est une vm mais c'est pas pour de la prod.
Kikfill.
Pour commencer attention avec Centos, pour que docker fonctionne correctement, il faut un Kernel supérieur à 3.8, hors celui de Centos 6 est en 2.6. Tu peu bien entendu l'upgrader en 3.10, mais faut connaître. Docker fonctionne quand même sur centos 6.6, Red Hat on déportés sur le package les dépendances LXC, mais cela ne rend pas Docker très stable.
Ensuite, creer des VM pour mettre des conteneurs ca se fait, pour de la prod ou du dev, c'est pareil, docker ne remplacera pas les VM, et si l'on souhaite héberger plusieurs choses différentes sur les mêmes port d'écoute, ben sans VM c'est pas possible sur une seule machine.
Par contre tu réduira d'autant tes performances, mais je pense qu'ici cela est fait pour ton stage.
S'il s'agit d'outils web, je vous conseille dans ce cas de ne pas mettre de VM, mais d'utiliser un reverse proxy en amont, nginx ou autre que vous connaissez qui vous semble le plus judicieux.
Concernant l'OS, je te conseillerais de t'orienter sur des systèmes legé et déjà orienté Docker, tu en trouvera deux principaux :
http://www.projectatomic.io/ et https://coreos.com/
Voilà, esperant avoir répondu à tes questions.
Je profite de ce topic pour te féliciter - @renouveau - pour l'excellente clarté de tes tutos sur ce sujet parfois pas évident !
Hier soir, sur le stream de Grafikart, cet enf..ré a déformé mes propos, alors que je profitais de cette occasion pour te remercier.
Dernièrement, j'ai testé "live" Docker sur leur nouvelle offre VPS SSD (pas cher) où on peut lancer un serveur Ubuntu 15 avec Docker installé. Résultat : ça fonctionne impeccable avec Docker-Compose, pondre des Dockerfile devient trop facile, et tout fonctionne à merveille (php 5.6, mysql, pgsql, sqlite, redis, cache, elasticsearch, etc...).
J'ai encore quelques blocages avec Nginx, le DNS de base d'OVH (peut-être un docker avec bind9 ?), mais grâce à toi, ça évolue d'heure en heure de façon spectaculaire.
J'en avais grave marre de taper des commandes d'install de serveurs sur VPS / dédié depuis des mois que je désespérais de trouver une solution (scripts bash, liaisons réseau entre différents serveurs, etc...) que Docker apparaît comme une potion magique dans l'univers impitoyable du web dev !!
Donc, encore une fois : UN GRAND MERCI !!
Merci Huggy pour tes liens.
mzkd, ca fait plaisir de voir des messages comme les tiens. Ca montre que l'on ne fait les choses pour rien. Et si ca t'a permi d'avancer dans tes projets perso ou pro, c'est encore mieux :).
Concernant les offres Docker, elles arrivent, c'est un peu lent mais tous les hébergeurs regardent Docker et leur serveur en même temps et se demandent quand il pourrons y passer simplement. Pas évident dans les grosses structures.
En tous cas, merci à toi pour ces retours.