Je m'interesse à titre personnel aux Dockers sous Linux et, juste pour le plaisir de partager, je vous fais un récapitulatif de quelques opérations basiques. Si ça peut aider quelqu'un ou faire découvrir ce que sont les Dockers, cette technique de virtualisation légère d'application sous Linux, ou encore partager des questions/réponses, c'est juste le but de ce post.
Tout a été fait et testé sur des Debian JESSIE et STRETCH 64 bits (condition sine qua non pour installer Docker).
Installer Docker :
- Code: Tout sélectionner
apt-get purge lxc-docker*
apt-get purge docker.io*
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Ajouter dans /etc/apt/sources.list
- Code: Tout sélectionner
deb https://apt.dockerproject.org/repo debian-jessie main
Installer le paquet apt-transport-https si nécessaire
- Code: Tout sélectionner
apt-get install apt-transport-https
..puis
- Code: Tout sélectionner
apt-get update && apt-get install docker-engine
Lancer le démon et vérifier l'état:
- Code: Tout sélectionner
service docker start
docker version
Chercher et installer des images
- Code: Tout sélectionner
docker search debian
docker pull debian:jessie
Lister les images installées, toutes et l'historique des modifications :
- Code: Tout sélectionner
docker images
docker images --all
docker history debian:jessie
Supprimer une image :
- Code: Tout sélectionner
docker rmi nom_image
Supprimer un conteneur :
- Code: Tout sélectionner
docker rm nom_conteneur
Infos docker et info d'un conteneur :
- Code: Tout sélectionner
docker info
docker inspect nom_conteneur
Créer un conteneur à partir d'une image :
- Code: Tout sélectionner
docker run --name=nom_conteneur -t -i debian:jessie /bin/bash
avec : -t = shell -i = STDIN --name = nommer précisément le docker
.. et commande à la fin
Lister les conteneur actifs ou pas:
- Code: Tout sélectionner
docker ps
docker ps -a
Stopper, killer, relancer, rattacher un conteneur :
- Code: Tout sélectionner
docker stop nom_conteneur
docker kill nom_conteneur
docker start nom_conteneur
docker attach nom_conteneur
Exécuter une commande, avec terminal interactif, dans un conteneur lancé :
- Code: Tout sélectionner
docker exec -ti nom_conteneur /bin/bash
Lancer un process sur un port précis d'écoute (8080 mappé vers conteneur:80) :
- Code: Tout sélectionner
docker run -d -p 8080:80 debian-ngx /usr/sbin/nginx -g "daemon off;"
docker run -d -p 8080:80 apache /usr/sbin/apache2ctl -D FOREGROUND
.. ici on accède alors au serveur NGINX ou APACHE "dockerisé" dans son navigateur sur le poste local avec l'adresse : http://127.0.0.1:8080
Monter un volume local (répertoire) libre, ou mappé sur un répertoire précis :
- Code: Tout sélectionner
docker run --volume /var/www mon_conteneur
docker run --volume /var/www:/home/mon_user/monsite mon_conteneur
Lister les process d'un conteneur :
- Code: Tout sélectionner
docker top nom_conteneur
Valider (commit) les modifications d'un conteneur pour créer une image :
- Code: Tout sélectionner
docker commit nom_conteneur nom_nouvelle_image
Exporter un Docker en archive tar et le réimporter sur une autre système :
- Code: Tout sélectionner
docker export -o=nom_conteneur.tar nom_conteneur
docker import nom_conteneur.tar nom_conteneur
Voici un exemple complet pour une installation rapide de Openfire (sans chichi, sans certificat, sans config extraordinaire et avec une base native qui sera donc intégrée au docker), un serveur de messagerie instantanée JABBER :
- Code: Tout sélectionner
docker pull debian:jessie
docker run --name="openfire" -ti debian:jessie /bin/bash
apt-get update && apt-get upgrade (dans l'instance docker)
apt-get install wget less (dans l'instance docker)
cd /usr/local (dans l'instance docker)
wget http://download.igniterealtime.org/openfire/openfire_4.0.0_all.deb (ou lien actualisé de version) (dans l'instance docker)
apt-get install openjdk-7-jre-headless openjdk-7-jre (dans l'instance docker)
dpkg -i openfire_4.0.0_all.deb (dans l'instance docker)
exit (dans l'instance docker)
docker commit openfire serveuropenfire
docker run --name="serveuropenfire" -d -p 8080:8080 -p 9090:9090 -p 5222:5222 serveuropenfire usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -server -DopenfireHome=/usr/share/openfire -Dopenfire.lib.dir=/usr/share/openfire/lib -classpath /usr/share/openfire/lib/startup.jar -jar /usr/share/openfire/lib/startup.jar
... et c'est tout, vous avez désormais un serveur jabber qui tourne sur votre Linux
Vous pouvez le configurer et l'administrer par votre navigateur : http://127.0.0.1:9090
Puis vous y connecter avec votre logiciel de messagerie instantanée préférée par l'adresse du serveur 127.0.0.1 port classique 5222.... et inviter des amis à tchater avec vous, sur le même réseau ou plus loin si vous leur donnez l'accès distant à votre serveur à travers votre box/routeur (ip_publique:5222).
Avec toutes ces commandes et ces exemples il y a déjà de quoi s'amuser.
Bonne découverte