Skip to content
Snippets Groups Projects
Verified Commit 65808c4f authored by iliya.saroukha's avatar iliya.saroukha :first_quarter_moon:
Browse files

feat: ex2 of docker basics done

parent 728622a7
No related branches found
No related tags found
No related merge requests found
...@@ -75,3 +75,107 @@ quels sont leurs noms et IDs ? ...@@ -75,3 +75,107 @@ quels sont leurs noms et IDs ?
- Sur quelle machine se trouvent les images `docker` ? - Sur quelle machine se trouvent les images `docker` ?
- Les images se trouvent sur le serveur exécutant le daemon `docker`, en - Les images se trouvent sur le serveur exécutant le daemon `docker`, en
l'occurrence c'est la VM de l'école. l'occurrence c'est la VM de l'école.
## Exercice 2
Exécutez le container `hepia/docker_ex03` avec un shell (`sh`) intéractif et
créez ensuite le fichier `fantasio` dans le répertoire `/ex03/` avec la commande
`touch`.
```bash
docker run -it --rm hepia/docker_ex03 /bin/sh
```
```bash
cd ex03
```
```bash
touch fantasio
```
- Que se passe-t-il quand vous quittez le shell avec `Ctrl-d` ?
- Le container est arrêté mais n'est pas supprimé (en l'occurrence il le
sera je l'exécute avec l'option `--rm`).
Exécutez un nouveau container basé sur la même image que précédemment et nommez-la
`zorglub`.
```bash
docker run -it --name zorglub hepia/docker_ex03 /bin/sh
```
- Est-ce que le fichier `/ex03/fantasio` existe ou pas ? Pourquoi ?
- Non, le fichier en question n'existera pas dans ce nouveau container
car le container `zorglub` n'est qu'une instance de l'image `hepia/docker_ex03`.
Ce container n'a rien en commun avec le container précédent à part l'image
**_parent_** qu'ils ont en commun.
Dans le container `zorglub`, créez le fichier `/ex03/fantasio`, puis pressez la
combinaison de touches `Ctrl-p` `Ctrl-q`.
- Quel est l'état (stoppé, en exécution, etc...) du container `zorglub` ?
- À l'aide de cette combinaison de touches, nous avons simplement détaché
le terminal intéractif du container. Par conséquent, le container est toujours
en cours d'exécution.
- Le rôle de cette combinaison est de se détacher du shell intéractif du
container sans pour autant terminé son exécution.
Attachez-vous (`docker attach`) alors au container `zorglub` ?
```bash
docker attach zorglub
```
- Est-ce que le fichier `/ex03/fantasio` existe encore ?
- Oui, le fichier est présent.
Dans un nouveau terminal, attachez-vous à nouveau au container `zorglub`. Placez
à côte à côte les deux terminaux dans lesquels vous êtes attaché au container
`zorglub` et tapez des caractères au clavier.
- Qu'observez-vous et que pouvez-vous donc en déduire ?
- Nous pouvons donc en déduire que nous pouvons attacher un nombre arbitraire
de terminaux à un container cependant celui-ci ne sera dupliqué donc cela
revient à avoir une multitude de vues d'un seul _processus_.
![2 terminals, 1 container (iykyk)](../figs/docker_two_terminals.png){width=60%}
Exécutez la commande `docker exec -it zorglub sh`
- Est-ce que le fichier `/ex03/fantasio` existe toujours ? Combien de shells
sont en cours d'exécution (aide : `ps`) ?
- Oui, le fichier existe toujours. En exécutant la commande `ps -ef`, on
s'aperçoit que deux shells sont en cours d'exécution (`/bin/sh` et `sh`).
- Quelle est la différence entre les commandes `attach` et `exec` ?
- La différence entre ces deux commandes sont les suivantes :
- `attach` permet de se "réattacher" au processus qui a été lancé
au démarrage du container
- `exec` permet de lancer un nouveau processus dans un container démarré
(ex.: lancer un nouveau shell afin d'inspécter son système de fichiers).
Terminez le shell (p.ex. avec `Ctrl-d`) dans lequel vous aviez exécuté `docker exec ...`
auparavant.
- Est-ce que le container `zorglub` est toujours en cours d'exécution ?
- Oui, il l'est toujours.
Exécutez un nouveau shell avec la commande `docker exec -it zorglub sh`,
puis allez dans le terminal où vous aviez réalisé le `docker attach` plus haut.
Terminez alors ce shell avec `Ctrl-d`.
- Est-ce que le container `zorglub` est toujours en cours d'exécution ? Que
pouvez-vous en conclure ?
- En ayant fait cette manipulation, on s'aperçoit que nous avons non seulement
arrêté le processus lancé par `docker exec ...`, nous avons aussi complètement
arrêté le container ainsi que tous les vues que nous possédions vers celui-ci.
La conclusion est (comme je l'ai mentionné précédemment) que la commande
`docker attach` permet de nous "attacher" au processus original du container
et par conséquent, si on le quitte, cela va arrêter le container.
Démarrez le container `zorglub` avec la commande `start -ia` (_attach_ + _interactive_).
- Le fichier `/ex03/fantasio` existe-t-il toujours ?
- Oui, le fichier existe toujours.
figs/docker_two_terminals.png

56.1 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment