Accueil > linux > Linux, Docker

Linux, Docker


Mon petit cluster commence à ressembler à quelque-chose :

Bien sûr, on peut améliorer les choses :

  • passer en adressage IP V6 au lieu de l’IP V4 actuelle
  • Sécuriser le cluster, par exemple en supprimant l’accès distant à internet
  • Sécuriser l’accès nfs, pour le moment ouvert à tous vents.

L’aspect sécurité est le plus important, et les solutions sont en cours d’évaluation. Par contre l’IP V6 peut encore attendre un peu.

J’ai donc un cluster presque utilisable, mais où presque tout reste à faire pour y faire tourner des applications sans trop avoir à se casser la tête.

La solution qui m’intéresse le plus est Docker, et c’est bien le but de cette série d’articles. Commençons donc par l’installer sur chacun des noeuds.

Installation de Docker

Mes machines tournent sous Debian Linux, en mode headless (sans clavier, souris ni écran), en accès ssh. L’installation se fait donc via une interface chaise-clavier à coups de commandes apt sur chacun des nœuds du cluster:

  1. Activer les backports. Ceux-ci permettent d’installer des paquets en principe non prévus pour la version actuelle de Debian (8 dans mon cas, 9 pour les courageux), mais portés depuis une version plus récente de Debian.
  2. Installer quelques paquets nécessaires
  3. Installer Docker
  4. Créer un groupe unix docker et y ajouter le compte utilisateur unix
  5. Tester l’installation

J’ai utilisé les commandes suivantes (à adapter à votre cas) sous le compte root sur chacune des machines du cluster :

# Ajouter les backports au sources.list du noeud
echo '' >> /etc/apt/sources.list
echo '# Backport needed by Docker' >> /etc/apt/sources.list
echo 'deb http://ftp.debian.org/debian jessie-backports main' >> /etc/apt/sources.list

# Mettre à jour la liste des paquets disponibles
apt-get update

# Installer quelques paquets utiles
apt-get -y install apt-transport-https ca-certificates
apt-get -y install curl software-properties-common

# Ajouter la clef et le repository des paquets de Docker
curl -fsSL https://download.docker.com/linux/debian/gpg \
| apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable"

# Mettre à nouveau à jour la liste des paquets disponibles 
apt-get update  

# Télécharger et installer docker 
apt-get -y install docker-ce 

# Démarrer le service docker 
service docker start

Création du groupe docker

Ce groupe unix évite de devoir se connecter en root pour démarrer des conteneurs. Ceci se fait à nouveau sous le compte root.

# Créer le groupe docker.
groupadd docker

# Ajouter un compte (ici user1 sur le noeud island1)
usermod -aG docker user1

Test de l’installation

Si tout se passe bien, on peut passer au test classique du « hello world! »

docker run hello-world

Le résultat devrait ressembler à ceci :

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/

Etat des lieux

Jusqu’ici, les nœuds étaient reliés en un cluster unix où chaque machine faisait ce que l’on voulait bien y lancer au travers d’une connexion ssh.

Après les manipulations indiquées plus haut, chaque nœud fait fonctionner son instance indépendante de Docker, et il « suffit » d’y lancer des applications dans des conteneurs au fur et à mesure des besoins.

London docks c1909

« Suffit » est entre guillemets car plusieurs limites apparaissent très vite :

  • Si une machine « meurt » (carte réseau ou disque HS par exemple), les applications qui y tournaient, ainsi que leurs données, sont perdues, le temps de remplacer le matériel fautif, et de restaurer applications et données.
  • Il faut se souvenir sur quelle machine tourne chaque application …
  • … et que la machine en question soit démarrée.

Ces limites ont plusieurs solutions, dont le mode « Swarm » de Docker.

Autres billets sur le sujet :

Creative Commons License

Publicités
Catégories :linux Étiquettes :
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :