Commit 7ed253f6 authored by CHAMONT David's avatar CHAMONT David
Browse files

reorganisation des instructions d'installation de docker

parent 71a2413b
......@@ -22,35 +22,9 @@ habituels, et d'utiliser une machine Docker uniquement pour compiler et exécute
le programme résultant.
Vous devriez avoir déjà installé Docker et VirtualBox, conformément aux instructions
du [README.md](../README.md) principal de ce projet. Pour vérifier que votre Docker
est opérationnel, ouvrez une fenêtre de commande et tapez `docker run hello-world`:
```
> docker run hello-world
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 Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
```
Vous devriez également déjà disposer de l'image `gcc:6.1`. Si ce n'est pas
le cas et que vous disposez de réseau, tapez `docker pull gcc:6.1`.
du [README.md](../README.md) principal de ce projet. Vous devriez également déjà
disposer de l'image `gcc:6.1`. Si ce n'est pas le cas et que vous disposez de réseau,
tapez `docker pull gcc:6.1`.
En partant de l'hypothèse que vous éditerez vos fichiers dans le répertoire
local <LOCAL>, nous vous proposons de monter ce répertoire en tant que
......@@ -72,8 +46,8 @@ int main()
A présent, compilez le et exécutez le au sein d'une machine Docker `gcc:6.1` :
```
> docker run -it -v <LOCAL>:/Piscine gcc:6.1 /bin/bash
> cd /Piscine
> docker run -it -v <LOCAL>:/piscine gcc:6.1 /bin/bash
> cd /piscine
> g++ -std=c++14 hello_world.cpp -o hello_world.exe
> ./hello_world.exe
......
......@@ -23,39 +23,13 @@ habituels, et d'utiliser une machine Docker uniquement pour compiler et exécute
le programme résultant.
Vous devriez avoir déjà installé Docker et VirtualBox, conformément aux instructions
du [README.md](../README.md) principal de ce projet. Pour vérifier que votre Docker
est opérationnel, ouvrez une fenêtre de commande et tapez `docker run hello-world`:
```
> docker run hello-world
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 Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
```
Vous devriez également déjà disposer de l'image `gcc:6.1`. Si ce n'est pas
le cas et que vous disposez de réseau, tapez `docker pull gcc:6.1`.
du [README.md](../README.md) principal de ce projet. Vous devriez également déjà
disposer de l'image `gcc:6.1`. Si ce n'est pas le cas et que vous disposez de réseau,
tapez `docker pull gcc:6.1`.
En partant de l'hypothèse que vous éditerez vos fichiers dans le répertoire
local <LOCAL>, nous vous proposons de monter ce répertoire en tant que
`/Piscine` au sein de la machine Docker. Créez le programme suivant au sein
`/piscine` au sein de la machine Docker. Créez le programme suivant au sein
de <LOCAL> :
```c++
......@@ -72,8 +46,8 @@ int main()
A présent, compilez le et exécutez le au sein d'une machine Docker `gcc:6.1` :
```
> docker run -it -v <LOCAL>:/Piscine gcc:6.1 /bin/bash
> cd /Piscine
> docker run -it -v <LOCAL>:/piscine gcc:6.1 /bin/bash
> cd /piscine
> g++ -std=c++14 hello_world.cpp -o hello_world.exe
> ./hello_world.exe
......@@ -124,8 +98,8 @@ portable (répertoire <LOCAL>). Vous pouvez aussi récupérer ce fichier déjà
l'adresse internet donnée au début de ce tutoriel. Essayez de compiler et d'exécuter
ce code au sein d'une machine docker `gcc 6.1` :
```
> docker run -it -v <LOCAL>:/Piscine gcc:6.1 /bin/bash
> cd /Piscine
> docker run -it -v <LOCAL>:/piscine gcc:6.1 /bin/bash
> cd /piscine
> g++ -std=c++14 lbd_motivation_1.cpp -o lbd_motivation_1.exe
> ./lbd_motivation_1.exe
```
......
......@@ -21,35 +21,9 @@ habituels, et d'utiliser une machine Docker uniquement pour compiler et exécute
le programme résultant.
Vous devriez avoir déjà installé Docker et VirtualBox, conformément aux instructions
du [README.md](../README.md) principal de ce projet. Pour vérifier que votre Docker
est opérationnel, ouvrez une fenêtre de commande et tapez `docker run hello-world`:
```
> docker run hello-world
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 Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
```
Vous devriez également déjà disposer de l'image `gcc:6.1`. Si ce n'est pas
le cas et que vous disposez de réseau, tapez `docker pull gcc:6.1`.
du [README.md](../README.md) principal de ce projet. Vous devriez également déjà
disposer de l'image `gcc:6.1`. Si ce n'est pas le cas et que vous disposez de réseau,
tapez `docker pull gcc:6.1`.
En partant de l'hypothèse que vous éditerez vos fichiers dans le répertoire
local <LOCAL>, nous vous proposons de monter ce répertoire en tant que
......
# Installation de Docker sur une machine sous Linux
Docker est une plateforme qui va vous permettre d'exécuter du code "linux" à
l'intérieur d'un conteneur indépendamment de la machine sur laquelle vous êtes.
Un conteneur ressemble à une machine virtuelle sauf qu'il n'embarque pas
tout un système d'exploitation avec lui, ce qui lui permet de s'exécuter en
quelque secondes et d'être beaucoup plus léger
(*source : [Uhsac](http://putaindecode.io/fr/articles/docker/)*).
* prérequis : connaissance de Linux.
* hauteur du plongeoir : 1m.
---
## Installation de base
C'est [ici](http://www.docker.com/products/docker#/linux).
Pour vérifier que votre Docker est opérationnel, ouvrez une fenêtre de
commande et tapez `docker run hello-world` :
```
> docker run hello-world
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 Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
```
---
## Partager des fichiers entre machine hôte et conteneur
Si vous souhaitez éditer certains fichiers avec vos outils préférés sur votre
machine hôte, et que ces fichiers soient visibles depuis un conteneur,
il faut réaliser une forme de "montage" au lancement du conteneur.
Par exemple, si je souhaite exécuter un shell dans un conteneur `busybox` (unix allégé),
et que le répertoire courant, `$PWD`, soit visible au sein du conteneur en
tant que `/piscine` :
```
docker run --rm -it -v $PWD:/piscine -w /piscine busybox sh
```
Essayez et vérifiez que vous pouvez créer et modifier des fichiers dans l'un
ou l'autre monde (la machine hôte ou le conteneur), et que les résultats sont visibles
des deux côtés.
---
## X11 forwarding
Si vous avez besoin de faire tourner dans un conteneur Docker une application graphique,
il faut qu'elle puisse envoyer ses instructions à un serveur X11 s'exécutant sur
la machine hôte.
Pour tester que votre configuration fonctionne, vous pourrez essayer de faire
exécuter l'image `gns3/xeyes`, qui se contente de faire apparaitre
deux yeux sur votre écran.
Si la machine hôte est sous Linux, il suffit de propager la variable DISPLAY
(option -e) au conteneur ainsi qu'un accès au répertoire `/tmp/.X11-unix`.
```
export DISPLAY=:0
xhost +
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw gns3/xeyes
```
# Installation de Docker sur une machine sous MacOSX
Docker est une plateforme qui va vous permettre d'exécuter du code "linux" à
l'intérieur d'un conteneur indépendamment de la machine sur laquelle vous êtes.
Un conteneur ressemble à une machine virtuelle sauf qu'il n'embarque pas
tout un système d'exploitation avec lui, ce qui lui permet de s'exécuter en
quelque secondes et d'être beaucoup plus léger
(*source : [Uhsac](http://putaindecode.io/fr/articles/docker/)*).
* prérequis : connaissance de MacOSX.
* hauteur du plongeoir : 1m.
---
## Installation de base
La [nouvelle mouture] (http://www.docker.com/products/docker#/mac) de Docker
pour Windows, dite "DockerForMac", exploite une couche de virtualisation
légère propre à MacOSX, et vous permet d'utiliser exactement les mêmes
commandes Docker que vos collègues Linux.
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 docker
```
Si votre matériel est trop vieux (< 2010), vous serez obligé
d'utiliser l'[ancienne mouture de docker](https://www.docker.com/products/docker-toolbox),
dite "DockerToolbox", reposant sur VirtualBox.
Là encore, [brew](http://brew.sh/) simplifie la tâche :
```
$> brew update
$> brew cleanup && brew cask cleanup
$> brew cask install dockerdockertoolbox
```
Pour vérifier que votre Docker est opérationnel, ouvrez une fenêtre de
commande et tapez `docker run hello-world` :
```
> docker run hello-world
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 Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
```
---
## Partager des fichiers entre machine hôte et conteneur
Si vous souhaitez éditer certains fichiers avec vos outils préférés sur votre
machine hôte, et que ces fichiers soient visibles depuis un conteneur,
il faut réaliser une forme de "montage" au lancement du conteneur.
Par exemple, si je souhaite exécuter un shell dans un conteneur `busybox` (unix allégé),
et que le répertoire courant, `$PWD`, soit visible au sein du conteneur en
tant que `/piscine` :
```
docker run --rm -it -v $PWD:/piscine -w /piscine busybox sh
```
Essayez et vérifiez que vous pouvez créer et modifier des fichiers dans l'un
ou l'autre monde (la machine hôte ou le conteneur), et que les résultats sont visibles
des deux côtés.
ATTENTION : dans les préférences de Docker, il y a une liste restreinte des répertoires
qui ont le droit d'être partagés. L'option -v ne fonctionne que si vous restez dans
cette liste. Dans l'exemple ci-dessus, vérifiez que votre $PWD est autorisé.
Sinon, ajouter le répertoire concerné ou l'un de ses parents dans la liste.
---
## X11 forwarding
Si vous avez besoin de faire tourner dans un conteneur Docker une application graphique,
il faut qu'elle puisse envoyer ses instructions à un serveur X11 s'exécutant sur
la machine hôte.
Pour tester que votre configuration fonctionne, vous pourrez essayer de faire
exécuter l'image `gns3/xeyes`, qui se contente de faire apparaitre
deux yeux sur votre écran.
Si la machine hôte est sous Linux, il suffit de propager la variable DISPLAY
au conteneur ainsi qu'un accès au répertoire `/tmp/.X11-unix`.
```
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
```
# Installation de Docker sur une machine sous Windows
Docker est une plateforme qui va vous permettre d'exécuter du code "linux" à
l'intérieur d'un conteneur, quelle que soit la machine sur laquelle vous êtes.
Un conteneur ressemble à une machine virtuelle sauf qu'il n'embarque pas
tout un système d'exploitation avec lui, ce qui lui permet de s'exécuter en
quelque secondes et d'être beaucoup plus léger
(*source : [Uhsac](http://putaindecode.io/fr/articles/docker/)*).
* prérequis : connaissance de Windows.
* hauteur du plongeoir : 1m.
---
## Installation de base
La [nouvelle mouture] (http://www.docker.com/products/docker#/windows) de Docker
pour Windows, dite "DockerForWindows", exploite une couche de virtualisation
légère propre à Windows, et vous permet d'utiliser presque exactement les mêmes
commandes Docker que vos collègues Linux.
Si votre version de Windows est inférieure à 10, Build 10586, vous serez obligé
d'utiliser l'[ancienne mouture de docker](https://www.docker.com/products/docker-toolbox),
dite "DockerToolbox", reposant sur VirtualBox.
Pour vérifier que votre Docker est opérationnel, ouvrez une fenêtre de
commande et tapez `docker run hello-world` :
```
> docker run hello-world
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 Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
```
---
## Partager des fichiers entre machine hôte et conteneur
Si vous souhaitez éditer certains fichiers avec vos outils préférés sur votre
machine hôte, et que ces fichiers soient visibles depuis un conteneur,
il faut réaliser une forme de "montage" au lancement du conteneur.
Par exemple, si je souhaite exécuter un shell dans un conteneur `busybox` (unix allégé),
et que le répertoire courant, ???, soit visible au sein du conteneur en
tant que `/piscine` :
```
docker run --rm -it -v ???:/piscine -w /piscine busybox sh
```
Essayez et vérifiez que vous pouvez créer et modifier des fichiers dans l'un
ou l'autre monde (la machine hôte ou le conteneur), et que les résultats sont visibles
des deux côtés.
ATTENTION : dans les préférences de Docker, il y a une liste restreinte des répertoires
qui ont le droit d'être partagés. L'option -v ne fonctionne que si vous restez dans
cette liste. Dans l'exemple ci-dessus, vérifiez que votre répertoire est autorisé.
Sinon, ajouter le répertoire concerné ou l'un de ses parents dans la liste.
---
## X11 forwarding
Si vous avez besoin de faire tourner dans un conteneur Docker une application graphique,
il faut qu'elle puisse envoyer ses instructions à un serveur X11 s'exécutant sur
la machine hôte.
Pour tester que votre configuration fonctionne, vous pourrez essayer de faire
exécuter l'image `gns3/xeyes`, qui se contente de faire apparaitre
deux yeux sur votre écran.
Sous windows, nous recommandons d'installer `Exceed`. Cette application, une fois
lancée, vous permet de récupérer un pseudo numéro IP, par exemple `10.0.75.1`,
après quoi il vous suffira de définir la variable `DISPLAY=10.0.75.1:0`, par
exemple au lancement du conteneur :
```
docker run -e DISPLAY=10.0.75.1:0 gns3/xeyes
```
......@@ -2,7 +2,7 @@ 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]
Nous vous proposons 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
......@@ -23,138 +23,33 @@ un document d'expert, mais d'aider vos collègues à se mettre à l'eau.
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.
ordinateurs AVANT de venir aux JIs, ceci au moins jusqu'à l'exécution de la
machine "hello-world" (pour Docker) afin d'être bien sur 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
Vous trouverez dans les liens ci-dessous des mini-plongeons dédiés aux
différents systèmes d'exploitation.
* [Installer Docker sous Linux](https://gitlab.in2p3.fr/MaitresNageurs/PiscineJI/blob/master/DockerLinux/README.md)
* [Installer Docker sous MacOSX](https://gitlab.in2p3.fr/MaitresNageurs/PiscineJI/blob/master/DockerMac/README.md)
* [Installer Docker sous Windows](https://gitlab.in2p3.fr/MaitresNageurs/PiscineJI/blob/master/DockerWindows/README.md)
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
## Installation VirtualBox
Si vous avez lancé votre machine virtuelle en mode graphique et qu'elle
comprend un serveur X11, vous pouvez aussi tenter "setxkbmap fr".
C'est [ici](https://www.virtualbox.org/)
### Sur MacOSX, c'est encore pire...
Si vous avez une version ancienne de VirtualBox, merci de la mettre à
jour, sous peine de conflit avec Docker.
Si votre "alt" de gauche ne fonctionne pas, parfois celui de droite
fonctionne.
Les utilisateurs de clavier azerty peuvent peiner à faire reconnaitre leur clavier.
Quelques trucs et astuces :
* essayez la commande `loadkeys fr` ; si elle est absente, essayez d'installer le package `kbd`.
* si vous avez lancé votre machine virtuelle en mode graphique et qu'elle