Use lang en-US for samples

This commit is contained in:
nemunaire 2017-10-17 08:29:07 +02:00
parent f2f93440a7
commit 13dadd8c59
33 changed files with 318 additions and 0 deletions

View file

@ -19,25 +19,31 @@ l'option `--rm`.
Vous pouvez afficher l'ensemble des conteneurs, quelque soit leur état (en
cours d'exécution, arrêtés, ...) avec la commande suivante :
<div lang="en-US">
```
42sh$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
552d71619723 hello-world "/hello" 4 days ago Exited (0) 4 days ago dreamy_gates
0e8bbff6d500 debian "/bin/bash" 2 weeks ago Exited (0) 2 weeks ago cranky_jones
```
</div>
Il y a de fortes chances pour que vous n'ayez plus besoin de ces vieux
conteneurs. Pour les supprimer, utilisez la commande :
<div lang="en-US">
```
docker container rm 0e8bbff6d500 552d71619723
```
</div>
ou encore :
<div lang="en-US">
```
docker container rm cranky_jones dreamy_gates
```
</div>
## Images

View file

@ -6,9 +6,11 @@ Mon premier conteneur
Afin de tester la bonne marche de notre installation, lançons notre premier
conteneur avec la commande :
<div lang="en-US">
```
docker container run hello-world
```
</div>
Cette commande va automatiquement exécuter une série de commandes pour nous,
comme indiqué dans le message affiché en retour :
@ -23,16 +25,20 @@ node.js, etc.
Nous pouvons directement utiliser le client pour rechercher une image sur le
*Store*, en utilisant la commande `search` :
<div lang="en-US">
```
docker search mariadb
```
</div>
Il est possible de mettre à jour les images locales ou simplement
pré-télécharger des images depuis le Store en utilisant la commande `pull` :
<div lang="en-US">
```
docker image pull ubuntu
```
</div>
Remarquez comment on interagit avec chaque *objet Docker* : dans la ligne de
commande, le premier mot clef est le type d'objet (`container`, `image`,
@ -52,9 +58,11 @@ Par exemple, pour consulter la liste des images dont nous disposons localement
(soit parce qu'on les a téléchargées, soit parce que nous les avons créées
nous-même), on utilise la commande `ls` sous le type d'objets `image` :
<div lang="en-US">
```
docker image ls
```
</div>
Vous devriez constater la présence de plusieurs images « Ubuntu », mais chacune
a un *TAG* différent. En effet, souvent, il existe plusieurs versions d'une même
@ -79,9 +87,11 @@ La commande `run` de Docker prend comme derniers arguments le programme à
lancer dans le conteneur ainsi que ses éventuels arguments. Essayons d'afficher
un Hello World :
<div lang="en-US">
```
docker container run ubuntu /bin/echo "Hello World"
```
</div>
Dans notre exemple, c'est bien le `/bin/echo` présent dans le conteneur qui est
appelé. Ce n'est pas le programme `/bin/echo` de la machine hôte qui a été
@ -92,9 +102,11 @@ pas présent sur notre machine, mais bien uniquement dans le conteneur. Si vous
n'utilisez pas [Alpine Linux](https://www.alpine-linux.org), vous pourriez
tenter d'utiliser son gestionnaire de paquet `apk`, via :
<div lang="en-US">
```
docker container run alpine /sbin/apk stats
```
</div>
## Modifier une image
@ -125,24 +137,30 @@ créer une nouvelle image à partir de ce conteneur.
Pour créer une image, commençons par entrer dans un nouveau conteneur :
<div lang="en-US">
```
docker container run -it ubuntu /bin/bash
```
</div>
Vous avez remarqué l'utilisation des options `--tty` et `--interactive` ? Avant
le nom de l'image, elles sont gérées par Docker pour modifier le comportement
du `run`. En fait, tout comme `git(1)` et ses sous-commandes, chaque niveau de
commande peut prendre des paramètres :
<div lang="en-US">
```
docker DOCKER_PARAMS container run RUN_OPTS image IMAGE_CMD IMAGE_ARGS ...
```
</div>
Par exemple :
<div lang="en-US">
```
docker -H unix:///var/run/docker.sock container run -it alpine /bin/ash -c "echo foo"
```
</div>
Ici, l'option `-H` sera traitée par le client Docker (pour définir
l'emplacement du point de communication avec le daemon), tandis que les options
@ -157,12 +175,14 @@ sans quoi `bash` ne se lancera pas en mode interractif[^bashnointer].
[^bashnointer]: Mais il sera possible de l'utiliser sans allouer de TTY, comme
par exemple en faisant :
<div lang="en-US">
```
42sh$ cat cmd
echo foo
42sh$ cat cmd | docker run -i busybox
foo
```
</div>
L'option `-i` reste néanmoins nécessaire pour que l'entrée standard soit
transmise au conteneur.

View file

@ -16,15 +16,19 @@ c'est sur cette dernière que Docker pourra être exploité à son plein potenti
Avant de continuer, assurez-vous que votre machine a bien démarré sur un noyau
64 bits. Le retour de la commande `uname -m` doit vous indiquer :
<div lang="en-US">
```
x86_64
```
</div>
Assurez-vous également d'avoir un noyau récent, avec la commande `uname -r` :
<div lang="en-US">
```
4.13.4-gentoo
```
</div>
Vous ne pourrez pas utiliser Docker avec un noyau antérieur à la version 3.10.
@ -73,12 +77,15 @@ un bac à sable dans lequel vous pourrez commencer à faire ce TP.
Vous devriez maintenant être capable de lancer la commande suivante :
<div lang="en-US">
```
docker version
```
</div>
Une sortie similaire au bloc suivant devrait apparaître sur votre écran :
<div lang="en-US">
```
Client:
Version: 17.09.0-ce
@ -97,15 +104,18 @@ Server:
OS/Arch: linux/amd64
Experimental: false
```
</div>
### `no such file or directory`?
Si vous avez cette erreur : `dial unix /var/run/docker.sock: no such file or
directory.`, le deamon n'est sans doute pas lancé. Lancez-le :
<div lang="en-US">
```
sudo service docker restart
```
</div>
### `permission denied`?
@ -114,9 +124,11 @@ Si vous avez cette erreur : `dial unix /var/run/docker.sock: permission
denied.`, ajoutez votre utilisateur au groupe `docker` et **relancer votre
session** :
<div lang="en-US">
```
sudo gpasswd -a $USER docker
```
</div>
**Attention :** cette action n'est pas anodine d'un point de vue sécurité :
<https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface>

View file

@ -21,6 +21,7 @@ Docker propose de base trois pilotes (*drivers*) pour « gérer » cela :
Ces trois *drivers* sont instanciés de base dans Docker avec le même nom que
leur pilote. Pour consulter la liste de réseaux utilisables, lancez :
<div lang="en-US">
```
42sh$ docker network ls
NETWORK ID NAME DRIVER SCOPE
@ -28,6 +29,7 @@ NETWORK ID NAME DRIVER SCOPE
d5d907add6e2 host host local
16b702ed01a0 none null local
```
</div>
Par défaut, c'est le réseau `bridge` (de type `bridge`) qui est employé : ce
réseau utilise le pont `docker0` que vous pouvez voir dans vos interfaces
@ -55,17 +57,21 @@ est recommandé de créer des réseaux utilisateur.
La création d'un réseau se fait tout simplement au travers des sous-commandes
relatives aux objets Docker `network` :
<div lang="en-US">
```
docker network create --driver bridge my_network
```
</div>
C'est ensuite ce nom de réseau que vous passerez à l'option `--network` de vos
`run`, ou vous pouvez également faire rejoindre un conteneur déjà lancé à un
réseau :
<div lang="en-US">
```
docker network connect NETWORK CONTAINER
```
</div>
Lorsque plusieurs conteneurs ont rejoints un réseau utilisateur, ils peuvent
mutuellement se découvrir grâce à un système de résolution de nom basé sur leur
@ -76,18 +82,22 @@ nom de conteneur.
Lancez votre serveur web avec :
<div lang="en-US">
```
docker container run --name helloapp -d my_webserver
```
</div>
Puis créez un réseau utilisateur, rejoignez-le et lancez un conteneur dans le
même réseau utilisateur. Vous devriez être capable de lancer dans ce conteneur
les commandes :
<div lang="en-US">
```
ping helloapp
curl http://helloapp/
```
</div>
## Liaison à l'ancienne
@ -108,9 +118,11 @@ moins le mot de passe à utiliser via la variable d'environnement
disponible sur la page dédiée à l'image sur le *store* :
<https://store.docker.com/images/postgres>
<div lang="en-US">
```
docker container run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
```
</div>
Le lien permet de fournir à n'importe quel autre conteneur les mêmes variables
d'environnement. Cela évite d'avoir à recopier le mot de passe pour lancer un
@ -119,6 +131,8 @@ doit se connecter à une base de données : l'application doit être configurée
pour utiliser le mot de passe défini au lancement du conteneur de base de
données :
<div lang="en-US">
```
docker run -it --rm --link some-postgres:postgres postgres psql -h postgres -U postgres
```
</div>

View file

@ -56,6 +56,7 @@ placer dans une tarball (pas d'archive ZIP, RAR, ...).
Voici une arborescence type:
<div lang="en-US">
```
login_x-TP1/webserver
login_x-TP1/webserver/Dockerfile
@ -63,6 +64,7 @@ login_x-TP1/webserver/index.html
login_x-TP1/mycloud
login_x-TP1/mycloud/mycloud-run.sh
```
</div>
## Signature du rendu
@ -94,6 +96,7 @@ signature.
Si vous recevez un rapport avec l'erreur suivante :
<div lang="en-US">
```
[FAIL] Bad signature. Here is the gnupg output:
@ -102,6 +105,7 @@ gpg: using RSA key 842807A84573CC96
gpg: requesting key E2CCD99DD37BD32E from hkp server pool.sks-keyservers.net
gpg: Can't check signature: No public key
```
</div>
C'est que votre clef publique n'est pas dans mon trousseau et que les méthodes
de récupération automatique n'ont pas permis de la trouver. Uploadez votre
@ -114,9 +118,11 @@ de retenter votre rendu.
Si vous recevez un rapport avec l'erreur suivante :
<div lang="en-US">
```
[FAIL] The username of your key is not explicit, I can't find you.
```
</div>
Votre clef ne contient sans doute pas vos noms et prénoms ou l'adresse
électronique associée à la clef n'est pas celle que j'ai dans ma base de
@ -127,9 +133,11 @@ données.
Si vous recevez un rapport concluant ainsi :
<div lang="en-US">
```
After analyzing your e-mail, I've decided to SKIP it.
```
</div>
Cela signifie que la lecture de votre courriel qui a été préférée n'est pas
celle d'un rendu. Vérifiez que vous n'envoyez pas votre clef publique avec

View file

@ -27,9 +27,11 @@ exemple si vous voulez partager des fichiers avec votre voisin, en passant par
le protocole HTTP, mais sans se casser la tête à installer et configurer un
serveur web :
<div lang="en-US">
```
docker container run --rm -p 80:80 -v ~/Downloads:/usr/share/nginx/html:ro -d nginx
```
</div>
Une fois cette commande lancée, votre voisin pourra accéder à votre dossier
Downloads en renseignant l'IP de votre machine dans son navigateur favori !
@ -45,16 +47,20 @@ soucier de leur réel emplacement.
Comme il s'agit d'un objet, la première chose à faire va être de créer notre
volume :
<div lang="en-US">
```
docker volume create prod_db
```
</div>
Ensuite, nous pouvons démarrer un conteneur utilisant, par exemple :
<div lang="en-US">
```
docker container run --name mydb --mount source=prod_db,target=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
```
</div>
Lorsque le volume est vide, si des données sont présentes à l'endroit du point
de montage, celles-ci sont recopiées dans le volume.
@ -62,9 +68,11 @@ de montage, celles-ci sont recopiées dans le volume.
Si plus tard, vous souhaitez créer un conteneur chargé de faire des
sauvegardes, vous pourriez le lancer comme ceci :
<div lang="en-US">
```
docker container run -it --volume-from mydb busybox /bin/bash
```
</div>
## Volumes temporaires