La "piscine", dont le nom est inspiré de certaines pratiques dans les écoles d'informatique, se veut une sorte d'atelier collectif ou chacun est autonome et plonge sur les sujets de son choix, individuellement ou en petits groupes. Nous vous proposons en ligne un [ensemble de plongeons] (https://gitlab.in2p3.fr/MaitresNageurs/PiscineJI/tree/master) : des tutoriels courts (15 à 20 minutes), auto-suffisants, nécessitant le moins d'installation possible, notamment en s'appuyant sur des images Docker ou VirtualBox. Vous êtes libre d'essayer les plongeons de votre choix, à votre rythme. Nous cherchons à élargir au maximum le champ des propositions et des technologies. Si vous avez un sujet qui vous tient à coeur ou qui vous semble important, n'hésitez pas à contribuer. Il ne s'agit pas d'écrire un document d'expert, mais d'aider vos collègues à se mettre à l'eau. # Préparation aux plongeons ## Instructions générales Les tutoriels que nous vous proposons devront être exécutés sur vos ordinateurs portables, par le biais d'images Docker ou de machines virtuelles VirtualBox. Pour cette raison, nous vous demandons de pré-installer Docker et VirtualBox sur vos ordinateurs AVANT de venir aux JIs, ceci jusqu'à l'exécution de la machine "hello-world" (pour Docker) afin d'être bien surs que cela fonctionne. Vous veillerez à avoir une quantité raisonnable d'espace libre sur vos ordinateurs portables, car les machines virtuelles sont gourmandes... ## Installation VirtualBox C'est [ici](https://www.virtualbox.org/) ## Installation Docker ### Sur Linux C'est [ici](http://www.docker.com/products/docker#/linux). ### Sur Windows Si votre windows est <10, il faudra utiliser l'[ancienne mouture de docker] (https://www.docker.com/products/docker-toolbox), reposant sur VirtualBox. (Attention ceci est vrai seulement à partir d'une certaine release de Windows10 (*1511 November update, Build 10586 or later*) qui n'est pas nécessairement celle que vous avez installé) Sinon, vous pouvez utiliser la [nouvelle mouture] (http://www.docker.com/products/docker#/windows) où la machine virtuelle est moins visible, et où vous pouvez utilisez exactement les mêmes commandes Docker que vos collègues Linux. ### Sur MacOSX Si votre matériel est trop vieux (< 2010), il faudra utiliser l'[ancienne mouture de docker](https://www.docker.com/products/docker-toolbox), reposant sur VirtualBox. Plutôt qu'une installation graphique, on peut utiliser [Homebrew](http://brew.sh/) (*The missing package manager for OS X*) pour la gestion de son installation : $> brew update $> brew cleanup && brew cask cleanup $> brew cask install dockertoolbox Avec un matériel récent, utilisez plutôt la [nouvelle mouture] (http://www.docker.com/products/docker#/mac) où la machine virtuelle est moins visible, et où vous pouvez utilisez exactement les mêmes commandes Docker que vos collègues Linux. Là encore, [brew](http://brew.sh/) simplifie la tâche : $> brew update $> brew cleanup && brew cask cleanup $> brew cask install docker ## Cas particulier : X11 forwarding Si pour mon plongeon spécifique, j'ai besoin de faire tourner dans un conteneur Docker une application graphique linux, il faut qu'elle puisse envoyer ses instructions au serveur X11 de la machine hôte. Pour tester que votre configuration fonctionne, nous allons essayer de faire exécuter l'image `gns3/xeyes`, qui se contente de faire apparaitre deux yeux sur votre écran. ### Sur Linux Le cas le plus simple : vous vous assurez que la variable `DISPLAY` est définie et contient `:0`, vous glissez un petit `xhost +` pour autoriser les connexions extérieures, et vous faite suivre `DISPLAY` à votre conteneur, ainsi qu'un accès au répertoire temporaire adéquat : ``` export DISPLAY=:0 xhost + docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw gns3/xeyes ``` ### Sur MacOSX (avec Docker nouvelle mouture) C'est un peu plus chaud. D'abord, pour disposer d'un serveur X11, il faut installer XQuartz, et autoriser les connexions externes dans ses préférences de sécurité. Si vous avez la dernière version de XQuartz (2.7.9), il y a un bug à corriger à la main.... après la ligne 107 du fichier `/opt/X11/bin/startx` (`defaultserverargs="$defaultserverargs -nolisten tcp"`) ajoutez les deux lignes suivantes et redémarrez XQuartz en priant : ``` else defaultserverargs="$defaultserverargs -listen tcp" ``` *Sources : [forums.docker.com](https://forums.docker.com/t/x11-forwarding-issues-with-release-10/11252), [bugs.freedesktop.org](https://bugs.freedesktop.org/show_bug.cgi?id=95379).* Ensuite, sans doute à cause de la couche "xhyve", le conteneur doit récupérer un DISPLAY qui contient le numéro IP de la machine hôte. Pour récupérer ce numéro IP, il faut scruter les lignes "inet" dans la sortie de la commande `ifconfig`. Une fois que vous l'avez : ``` export DISPLAY=IP:0 xhost + docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw gns3/xeyes ``` ### Sur Windows 10 (avec Docker nouvelle mouture) AHEM... ## Cas particulier : mon clavier azerty n'est pas reconnu Avec VirtualBox plus qu'avec Docker, on peut avoir des soucis de clavier. Ci-dessous, un collection de trucs qui peuvent fonctionner... ou pas. ### Ligne de commande Tentez "loadkeys fr". Si la commande "loadkeys" est absente, essayez d'installer le package "kbd". ### Serveur X11 Si vous avez lancé votre machine virtuelle en mode graphique et qu'elle comprend un serveur X11, vous pouvez aussi tenter "setxkbmap fr". ### Sur MacOSX, c'est encore pire... Si votre "alt" de gauche ne fonctionne pas, parfois celui de droite fonctionne.