Partage de fichiers entre un système hôte et un container

Par défaut un container docker est totalement étanche. Il ne pourra pas communiquer ou échanger de données avec votre système hôte. Si vous utilisez docker pour monter un serveur web ça peut vite devenir contraignant. En effet vous serez obligés de développer votre site sur votre hôte puis pousser les fichiers vers le container en utilisant l'instruction:

ADD

Que nous avons vu dans le précédent article. Heureusement il est possible de partager des fichiers entre notre système hôte et notre container. Pour cela on pourra utiliser l'option -v de la commande docker run.

Pour tester tout ça nous allons avoir besoin d'une image apache2. Maintenant que nous savons nous servir du hub docker nous allons clairement nous faciliter la vie et en télécharger une déjà faite en utilisant les commandes:

sudo docker search httpd
sudo docker pull httpd

Une fois l'image téléchargée il ne nous restera plus qu'à la lancer en spécifiant l'option -v. Cette option va nous permettre de binder un répertoire depuis notre système hôte vers le container:

sudo docker run -d -v /var/www/html:/var/www/html httpd

L'option -d, quant à elle, va nous permettre de lancer le container en arrière plan. Si tout s'est bien passé vous ne devriez pas avoir de retour. En revanche si vous accédez au shell du container via la commande:

sudo docker exec -it <nom_du_container_ou_container_ID> bash

Vous verrez que le répertoire /var/www/html est bien bindé avec celui de votre système hôte:

Voilà comment vous pourrez partager des répertoires entiers entre votre système hôte et vos containers. L'option -v n'est malheureusement pas implémenté en tant qu'instruction utilisable pour écrire nos Dockerfile en revanche elle l'est dans le cas des fichiers docker-compose dont on parlera dans un prochain article :)!