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