Virtualiser autrement : installer et utiliser Docker
Pourquoi nous allons installer et utiliser Docker ?
De nos jours, la plupart des serveurs sont virtualisés. L’avantage, c’est de pouvoir de ce fait, déplacer une machine virtuelle d’un serveur à un autre, quel que soit le hardware.
Dans la même idée, Docker vient lui aussi virtualiser, mais au niveau de l’application. On se concentrera donc sur une seule chose : l’outil.
Je ne vais pas détailler Docker, je vous invite à chercher ça et là des informations sur le web à ce sujet.
Installer docker
Avant de commencer, on va vérifier que notre système est à jour. Mon installation sera valable sur Debian/RaspBian.
$ sudo apt update && sudo apt upgrade
Une fois cette partie faite, on peut passer à la suite. On va utiliser un outil simple pour mettre en place nos conteneurs : docker-compose.
L’installation est, comme d’habitude, relativement simple :
$ sudo apt install docker-compose -y
Maintenant que docker est installé, il faut lui dire quoi faire. Et pour cela, c’est relativement simple. Il existe une bibliothèque où vous pourrez trouver à peu près tout ce qui vous intéressera. C’est le Docker Hub.
Exemple de configuration
Maintenant que notre Docker est installé, il faut le mettre en route.
Pour cela, on va utiliser un fichier docker-compose.yml
qui contiendra l’intégralité des configurations de vos images.
Il se compose en général, de la forme suivante :
version: '3'
<-- version du fichier de configurationservices: nom
<-- nom de votre serviceimage: toto/toto:stable
<-- répertoire/image:version, la version dépend du conteneurcontainer_name: toto
<-- nom que vous utiliserez pour appeler le conteneurrestart: always
<-- on veut redémarer le conteneur tout le tempsvolumes: - /chemin/local:/chemin/conteneur
<-- chemin local où seront stockées les donnéesenvironment: - TS=Europe/Paris
<-- facultatif, dépend du conteneurports: - "local:conteneur"
<-- pour accéder au conteneur
Par exemple, pour nginx, cela donnerait ça :
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: always
volumes:
- /datastore/nginx/nginx.conf:/etc/nginx/nginx.conf
- /datastore/nginx/cache/:/etc/nginx/cache
- /datastore/nginx/logs/:/etc/nginx/logs
environment:
DEFAULT_HOST: mondomaine.com
ports:
- "80:80"
Une fois votre fichier docker-compose.yml enregistré, on peut passer à l’étape suivante : le démarrage.
Attention à l’indentation, elle est importante. Service a deux espaces, et ainsi de suite. Sinon, votre fichier sera erroné et rien ne fonctionnera !
Démarrer Docker
Pour démarrer, rien de plus simple. On part du principe que vos données et votre fichier docker-compose.yml sont stockés dans /datastore et que vous êtes dans ledit répertoire.
$ sudo docker-compose up nginx
Une fois lancé, vous verrez cela :$ sudo docker-compose up nginx
Starting nginx ... done
Attaching to nginx
Et si vous accédez à votre adresse via http://xx.xx.xx.xx vous verrez quelques lignes de log de ce genre :
nginx | 192.168.1.58 - - [14/Apr/2020:18:06:09 +0000] "GET / HTTP/1.1" 200 3175 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
Maintenant que nous avons pu valider notre configuration, il faut se détacher du conteneur, sinon, en quittant, il s’arrête.
Comme toujours, on quitte avec CTRL+C
^CGracefully stopping… (press Ctrl+C again to force)
Stopping nginx ... done
On relance le conteneur mais cette fois, on lui ajoute un petit -d
qui signifie « detach ».
$ sudo docker-compose up -d nginx
Starting nginx ... done
Vous pouvez retourner sur votre page web et vérifier que votre page s’affiche correctement.
Pour voir les logs de votre conteneur, c’est relativement simple :
$ sudo docker logs nginx
Comme vous avez pu le voir, il est plutôt facile de d’installer et utiliser Docker.
Ainsi, vous pouvez commencer sur votre Raspberry Pi, et continuer sur n’importe quelle autre plateforme prenant en charge les conteneurs !