Use lang en-US for samples
This commit is contained in:
parent
f2f93440a7
commit
13dadd8c59
33 changed files with 318 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue