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 :
- Eclipse 2019-03 (version développement JEE + Plugin Scala-IDE)
- Postgresql 10 (Serveur + Client)
- Apache Spark 3.1.2
- Apache Hadoop 3.1.2
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