Télécharger la version 0.1.2

knd : KNs docker

L'outil knd est un simple ensemble de scripts qui permet de construire et configurer une image docker, démarrer et arrêter un conteneur sur cette image et enfin lancer des programmes dans le conteneur.

Les logiciels installés sont :

Installation et pré-requis

Ce programme ne fonctionne que sur une distribution linux récente. Le logiciel docker doit être installé sur la machine et l'utilisateur courrant doit avoir les privilèges nécessaires pour construire des images docker (usuellement il doit être membre d'un groupe docker)

Il faut prévoir un temps de téléchargement et un espace libre d'environs 2.5Go.

Avec une distribution Debian ou compatible, faire:

$ apt update $ apt install docker.io $ sudo adduser MONLOGIN docker

en remplaçant ci-dessus MONLOGIN par votre login. Sortir de la session graphique et se reconnecter.

Utilisation

L'archive peut être installée et n'importe où sur le système. Le sous-répertoire bin peut être ajouté dans le PATH et contient une unique commande knd. Une façon simple est d'extraire l'archive dans son répertoire utilisateur puis d'ajouter au fichier .bashrc la ligne:

export PATH="$HOME/knd-0.1.2/bin:$PATH"

puis de relancer son terminal. Une fois le terminal relancé, on a accès à la commande knd. Cette dernière possède plusieurs sous-commandes :

knd build : (re-)construit l'image knd start : démarre le conteneur knd stop : arrête le conteneur knd run <cmd> [args] : exécute la commande <cmd> dans le conteneur knd help : affiche un message d'aide

Par exemple, on peut lancer eclipse avec la commande :

knd run eclipse

(il faut avoir construit au préalable l'image avec la commande knd build) La sous-commande run démarre le conteneur s'il n'est pas déjà démarré et la sous-commande build arrête le conteneur s'il est en cours de fonctionnement. Lors du démarrage du conteneur, le serveur ssh et le serveur postgresql sont démarrés automatiquement. On peut « rentrer » dans le conteneur avec un shell en exécutant simplement la commande bash :

knd run bash

À l'intérieur du conteneur, il existe un utilisateur ayant le même nom, même uid et même groupe principal que l'utilisateur extérieur. Par défaut, le répertoire ~/Documents et le répertoire ~/workspace-knd de l'hôte sont visibles en lecture et écriture dans le conteneur. Le répertoire ~/.eclipse-knd est mappé sur le répertoire ~/.eclipse du conteneur, afin de ne pas poluer une installation d'eclipse pré-existante. Il n'est pas conseillé d'utiliser le répertoire ~/workspace-knd avec un eclipse installé à l'extérieur du conteneur (problèmes de compatibilités de versions ou d'accès concurrents).

L'utilisateur se trouvant à l'intérieur du conteneur est sudoer sans mot de passe. Il suffit de faire sudo su pour passer root.

L'image installée est une Ubuntu 18.04 standard. Les logiciels supplémentaires sont installés dans /opt avec un un lien symbolique /public/kn -> /opt.

Eclipse

La version d'eclipse installée est Oxygen 2019-03 JEE avec le plugin Scala-IDE.

Postgresql

La version de postgresql installée est 10.0. L'utilisateur courant possède une base du même nom que son login à laquelle il est directement connecté en faisant psql. Pour les connections JDBC, le mot de passe est /login/_a, où /login/ est le login de l'utilisateur.

Hadoop

La version de hadoop installée est 3.1.2. Les commandes de bases sont ajoutées au PATH courant (hdfs, start-dfs.sh, …). Pour initialiser hadoop:

$ hdfs namenode -format #initialise un filesystem hdfs $ start-dfs.sh #démarre les datanodes et namenodes $ hdfs dfs -mkdir -p /user/$USER/ #crée un répertoire pour l'utilisateur dans le HDFS

Le conteneur expose le port 9870. Ainsi, une fois la commande start-dfs.sh lancée, on peut consulter avec son navigateur l'URL [http://localhost:9870].

Spark

La version de spark installée est 3.1.2. Les commandes de bases sont ajoutées au PATH courant (start-master.sh, start-worker.sh). Le nom de machine est toujours knd. On peut ainsi lancer spark avec:

$ start-master.sh $ start-worker.sh 'spark://knd:7077'

Attention, ces commandes doivent être lancée depuis un shell obtenu avec knd run bash. On peut consulter avec son navigateur l'URL [http://localhost:9090].

Arrêt

Lorsque l'on a fini de travailler, on peut exécuter (depuis son terminal, en dehors du conteneur) la commande knd stop qui arrête le conteneur.

Divers

L'ensemble de script est diffusé sous licence MIT. Les rapports de bugs peuvent êtres envoyés à kn@lri.fr