Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
report
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
gabriel.marinoja
report
Commits
65808c4f
Verified
Commit
65808c4f
authored
1 year ago
by
iliya.saroukha
Browse files
Options
Downloads
Patches
Plain Diff
feat: ex2 of docker basics done
parent
728622a7
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
content/06_docker_basics.md
+104
-0
104 additions, 0 deletions
content/06_docker_basics.md
figs/docker_two_terminals.png
+0
-0
0 additions, 0 deletions
figs/docker_two_terminals.png
with
104 additions
and
0 deletions
content/06_docker_basics.md
+
104
−
0
View file @
65808c4f
...
@@ -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_.

{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.
This diff is collapsed.
Click to expand it.
figs/docker_two_terminals.png
0 → 100644
+
0
−
0
View file @
65808c4f
56.1 KiB
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment