reseau:docker:utiliserdocker
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
reseau:docker:utiliserdocker [2023/11/21 11:46] – techer.charles_educ-valadon-limoges.fr | reseau:docker:utiliserdocker [2024/12/10 16:41] (Version actuelle) – techer.charles_educ-valadon-limoges.fr | ||
---|---|---|---|
Ligne 13: | Ligne 13: | ||
Cette commande lance le classique Hello world ! : | Cette commande lance le classique Hello world ! : | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker run hello-world |
Unable to find image ' | Unable to find image ' | ||
latest: Pulling from library/ | latest: Pulling from library/ | ||
- | 1b930d010525: Pull complete | + | c1ec31eb5944: Already exists |
- | Digest: sha256:92695bc579f31df7a63da6922075d0666e565ceccad16b59c3374d2cf4e8e50e | + | Digest: sha256:305243c734571da2d100c8c8b3c3167a098cab6049c9a5b066b6021a60fcb966 |
Status: Downloaded newer image for hello-world: | Status: Downloaded newer image for hello-world: | ||
Ligne 26: | Ligne 26: | ||
1. The Docker client contacted the Docker daemon. | 1. The Docker client contacted the Docker daemon. | ||
2. The Docker daemon pulled the " | 2. The Docker daemon pulled the " | ||
- | (amd64) | + | |
3. The Docker daemon created a new container from that image which runs the | 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 | 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: | To try something more ambitious, you can run an Ubuntu container with: | ||
Ligne 40: | Ligne 40: | ||
For more examples and ideas, visit: | For more examples and ideas, visit: | ||
| | ||
- | |||
- | btssio@ubuntudocker: | ||
</ | </ | ||
Ce qu’il faut retenir de l’exécution de cette commande : | Ce qu’il faut retenir de l’exécution de cette commande : | ||
- | * La première ligne indique que l’image du conteneur **' | + | * La première ligne indique que l’image du conteneur **' |
* L’image recherchée est alors **tirée (pull)** de Docker Hub depuis Internet. | * L’image recherchée est alors **tirée (pull)** de Docker Hub depuis Internet. | ||
- | * Une explication des étapes réalisées est indiquée : le client Docker, la session de terminal de votre serveur Ubuntu, contacte le **daemon** Docker | + | * Une explication des étapes réalisées est indiquée : le client Docker, la session de terminal de votre ordinateur, contacte le **daemon** Docker |
* Le conteneur est ensuite **arrêté automatiquement** car le traitement prévu s’est effectué, l’affichage du texte et rien d’autre. | * Le conteneur est ensuite **arrêté automatiquement** car le traitement prévu s’est effectué, l’affichage du texte et rien d’autre. | ||
===== Afficher les images Docker présentes sur la machine ===== | ===== Afficher les images Docker présentes sur la machine ===== | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker images |
- | REPOSITORY | + | REPOSITORY |
- | hello-world | + | hello-world |
- | btssio@ubuntudocker: | + | |
</ | </ | ||
Vous pouvez vérifier la présence de l’image qui a été tirée (pull) de Docker Hub et stockée sur votre serveur. Docker gère un **cache** des images sur la machine. Lors du prochain démarrage d’une instance de conteneur sur la même image il n’y aura pas de nouveau téléchargement sauf si elle a été modifiée entre-temps. | Vous pouvez vérifier la présence de l’image qui a été tirée (pull) de Docker Hub et stockée sur votre serveur. Docker gère un **cache** des images sur la machine. Lors du prochain démarrage d’une instance de conteneur sur la même image il n’y aura pas de nouveau téléchargement sauf si elle a été modifiée entre-temps. | ||
Ligne 67: | Ligne 64: | ||
**Explication des tags** | **Explication des tags** | ||
- | * Le **TAG** associé à l’image | + | * Le **TAG** associé à l’image |
* **IMAGE ID** est l’identifiant unique de l’image. | * **IMAGE ID** est l’identifiant unique de l’image. | ||
* **CREATED** est la date de création de l’image publiée sur le site Docker Hub. | * **CREATED** est la date de création de l’image publiée sur le site Docker Hub. | ||
Ligne 78: | Ligne 75: | ||
Pour constater que le conteneur lancé est bien arrêté vous pouvez visualiser les conteneurs actifs : | Pour constater que le conteneur lancé est bien arrêté vous pouvez visualiser les conteneurs actifs : | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker ps |
- | CONTAINER ID IMAGE COMMAND | + | CONTAINER ID |
- | btssio@ubuntudocker: | + | |
</ | </ | ||
Le conteneur | Le conteneur | ||
Ligne 90: | Ligne 86: | ||
Visualisez maintenant tous les conteneurs créés, qu’ils soient actifs ou non : | Visualisez maintenant tous les conteneurs créés, qu’ils soient actifs ou non : | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker ps -a |
- | CONTAINER ID IMAGE | + | CONTAINER ID IMAGE COMMAND |
- | 9bbd425c86f4 | + | be16991ea477 |
- | ae50ecb3a66d | + | 7905287e58fc |
- | btssio@ubuntudocker: | + | |
</ | </ | ||
- | Les 2 conteneurs basés sur la** même image hello-world**, | + | Les 2 conteneurs basés sur la **même image hello-world**, |
Chaque conteneur : | Chaque conteneur : | ||
Ligne 107: | Ligne 102: | ||
==== Récupérer une image dans sa dernière version ==== | ==== Récupérer une image dans sa dernière version ==== | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker pull ubuntu |
Using default tag: latest | Using default tag: latest | ||
latest: Pulling from library/ | latest: Pulling from library/ | ||
- | f476d66f5408: | + | de44b265507a: Pull complete |
- | 8882c27f669e: | + | Digest: sha256:80dd3c3b9c6cecb9f1667e9290b3bc61b78c2678c02cbdae5f0fea92cc6734ab |
- | d9af21273955: | + | |
- | f5029279ec12: Pull complete | + | |
- | Digest: sha256:d26d529daa4d8567167181d9d569f2a85da3c5ecaf539cace2c6223355d69981 | + | |
Status: Downloaded newer image for ubuntu: | Status: Downloaded newer image for ubuntu: | ||
- | btssio@ubuntudocker: | ||
</ | </ | ||
Ligne 127: | Ligne 118: | ||
- | Cette image est basée sur quatre couches logicielles | + | Cette image est basée sur une couche logicielle |
<code shell> | <code shell> | ||
… | … | ||
- | f476d66f5408: | + | de44b265507a: Pull complete |
- | 8882c27f669e: | + | |
- | d9af21273955: | + | |
- | f5029279ec12: Pull complete | + | |
… | … | ||
</ | </ | ||
Ligne 139: | Ligne 127: | ||
<WRAP center round info> | <WRAP center round info> | ||
**INFORMATION**\\ | **INFORMATION**\\ | ||
- | Le chargement de ce conteneur **ubuntu** et des couches logicielles nécessaires | + | Le chargement de ce conteneur **ubuntu** et de sa couche logicielle nécessaire |
</ | </ | ||
Ligne 145: | Ligne 133: | ||
Lancez un conteneur Ubuntu. Comme précédemment, | Lancez un conteneur Ubuntu. Comme précédemment, | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker run ubuntu |
- | btssio@ubuntudocker: | + | $ docker ps -a |
CONTAINER ID IMAGE COMMAND | CONTAINER ID IMAGE COMMAND | ||
b5ec671c6d11 ubuntu "/ | b5ec671c6d11 ubuntu "/ | ||
Ligne 166: | Ligne 154: | ||
- | Télécharger l’image Docker ubuntu :bionic-20210827 | + | Télécharger l’image Docker ubuntu :noble-20241118.1 |
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker pull ubuntu:noble-20241118.1 |
- | bionic-20210827: Pulling from library/ | + | focal-20241011: Pulling from library/ |
- | e4ca327ec0e7: Pull complete | + | d9802f032d67: Pull complete |
- | Digest: sha256:9bc830af2bef73276515a29aa896eedfa7bdf4bdbc5c1063b4c457a4bbb8cd79 | + | Digest: sha256:8e5c4f0285ecbb4ead070431d29b576a530d3166df73ec44affc1cd27555141b |
- | Status: Downloaded newer image for ubuntu:bionic-20210827 | + | Status: Downloaded newer image for ubuntu:focal-20241011 |
- | docker.io/ | + | docker.io/ |
- | btssio@ubuntudocker: | + | |
- | REPOSITORY | + | $ docker images |
- | Ubuntu | + | REPOSITORY |
- | ubuntu | + | ubuntu |
- | btssio@ubuntudocker: | + | ubuntu |
</ | </ | ||
Il s’agit exactement de la même image comme le montre le champ IMAGE ID. Vous pouvez donc télécharger une version plus ancienne d’Ubuntu si votre projet porte sur une version bien précise de cet OS et faire cohabiter ensuite des conteneurs utilisant des versions différentes de système d’exploitation ou de paquets logiciels. | Il s’agit exactement de la même image comme le montre le champ IMAGE ID. Vous pouvez donc télécharger une version plus ancienne d’Ubuntu si votre projet porte sur une version bien précise de cet OS et faire cohabiter ensuite des conteneurs utilisant des versions différentes de système d’exploitation ou de paquets logiciels. | ||
Ligne 184: | Ligne 172: | ||
Le champ SIZE indique la taille virtuelle de l’image, c’est à dire la taille de la couche téléchargée qui est plus important que celle du conteneur hello-world car l’image ubuntu ne s’appuie pas sur une couche préexistante. | Le champ SIZE indique la taille virtuelle de l’image, c’est à dire la taille de la couche téléchargée qui est plus important que celle du conteneur hello-world car l’image ubuntu ne s’appuie pas sur une couche préexistante. | ||
- | Pour connaître comment | + | Pour connaître comment |
+ | * Exemple pour l' | ||
<code shell> | <code shell> | ||
+ | # this isn't used for the official published images anymore, but is included for backwards compatibility | ||
+ | # see https:// | ||
FROM scratch | FROM scratch | ||
- | ADD ubuntu-bionic-core-cloudimg-amd64-root.tar.gz / | + | ADD oci/ |
- | … | + | CMD [" |
- | + | ||
- | # overwrite this with 'CMD []' in a dependent Dockerfile | + | |
- | CMD ["/bin/bash"] | + | |
</ | </ | ||
La première ligne - FROM scratch - indique que cette image ne se base pas sur une image préexistante. On part de la version de base d’Ubuntu. | La première ligne - FROM scratch - indique que cette image ne se base pas sur une image préexistante. On part de la version de base d’Ubuntu. | ||
- | La dernière ligne - CMD ["/bin/bash"] - indique le processus qui doit être lancé par le conteneur et qui est ici un shell Bash. | + | La dernière ligne - CMD [" |
- | Sans rentrer dans le détail du contenu du fichier Dockerfile, les différentes actions décrites dans ce fichier se sont traduites par le téléchargement | + | Sans rentrer dans le détail du contenu du fichier Dockerfile, les différentes actions décrites dans ce fichier se sont traduites par le téléchargement |
===== Utiliser les conteneurs ===== | ===== Utiliser les conteneurs ===== | ||
Le conteneur ubuntu lancé prévoit bien l’exécution d’un processus shell mais il s’est ensuite automatiquement arrêté. En effet, comme rien n’a été précisé lors du lancement pour que vous puissiez utiliser ce shell, le conteneur a considéré que l’action à faire, lancer un shell et rien d’autre, est terminée. Il s’arrête donc. | Le conteneur ubuntu lancé prévoit bien l’exécution d’un processus shell mais il s’est ensuite automatiquement arrêté. En effet, comme rien n’a été précisé lors du lancement pour que vous puissiez utiliser ce shell, le conteneur a considéré que l’action à faire, lancer un shell et rien d’autre, est terminée. Il s’arrête donc. | ||
+ | |||
+ | |||
+ | ==== Lancer un conteneur en lui faisant exécuter une commande spécifique (et non seulement celle prévue par défaut) ==== | ||
+ | < | ||
+ | $ docker run ubuntu cat / | ||
+ | DISTRIB_ID=Ubuntu | ||
+ | DISTRIB_RELEASE=24.04 | ||
+ | DISTRIB_CODENAME=noble | ||
+ | DISTRIB_DESCRIPTION=" | ||
+ | </ | ||
+ | La commande run a lancé un conteneur à partir de l’image ubuntu et a exécuté dessus la commande cat pour afficher le fichier de version d’ubuntu. | ||
+ | |||
+ | Pour visualiser l' | ||
+ | < | ||
+ | $ docker ps -a | ||
+ | CONTAINER ID IMAGE COMMAND | ||
+ | 907a2cb48db5 | ||
+ | </ | ||
+ | Il est ainsi possible de retrouver très facilement de multiples conteneurs totalement inutiles qu’il faut supprimer. | ||
+ | |||
+ | ==== Supprimer un conteneur ==== | ||
+ | docker rm <id conteneur> | ||
+ | |||
+ | < | ||
+ | $ docker rm distracted_wilbur | ||
+ | </ | ||
+ | Seul un conteneur avec un statut **exited** peut être supprimé. Si un conteneur est actif, il faut soit le stopper avant soit utiliser l’option -f : docker rm -f < | ||
+ | |||
+ | ==== Lancer un conteneur en programmant sa suppression ==== | ||
+ | Si, par exemple, le conteneur a pour seule vocation de lancer une commande, il est inutile de le conserver sur la machine hôte et il peut être supprimé dès qu’il a rempli sa fonction, comme nous l’avons fait avec le conteneur **hello-world** : cela peut se faire avec l’option **-- rm** : | ||
+ | |||
+ | < | ||
+ | $ docker run --rm ubuntu cat / | ||
+ | </ | ||
+ | Tant qu’un conteneur n’est pas supprimé, son environnement est sauvegardé et il peut être relancé. | ||
+ | |||
+ | ==== Relancer un conteneur ==== | ||
+ | docker start <id conteneur> | ||
+ | |||
+ | * Par défaut, le conteneur est relancé en arrière plan, donc rien ne s’affiche, | ||
+ | |||
+ | < | ||
+ | $ docker start -a laughing_ride | ||
+ | </ | ||
+ | |||
+ | |||
==== Lancer un conteneur en mode interactif ==== | ==== Lancer un conteneur en mode interactif ==== | ||
Ligne 207: | Ligne 241: | ||
* ouvrir une console pour que vous puissiez saisir des commandes : paramètre -t. | * ouvrir une console pour que vous puissiez saisir des commandes : paramètre -t. | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker run -i -t ubuntu |
root@394beb25ab78:/# | root@394beb25ab78:/# | ||
bin | bin | ||
Ligne 234: | Ligne 268: | ||
Pour lancer un conteneur arrêté avec son identifiant ou son nom : | Pour lancer un conteneur arrêté avec son identifiant ou son nom : | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker start ID_ou_son_nom |
</ | </ | ||
==== Autre commande pour visualiser les conteneurs actifs ==== | ==== Autre commande pour visualiser les conteneurs actifs ==== | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker container ls |
</ | </ | ||
Ligne 246: | Ligne 280: | ||
Lors du lancement d’un conteneur, on perd l’accès à la console du serveur Ubuntu. Cette commande permet de lancer le conteneur et de retrouver le shell du serveur sans arrêter le conteneur. | Lors du lancement d’un conteneur, on perd l’accès à la console du serveur Ubuntu. Cette commande permet de lancer le conteneur et de retrouver le shell du serveur sans arrêter le conteneur. | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker run -i -t -d ubuntu |
e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1 | e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1 | ||
- | btssio@ubuntudocker: | + | $ docker ps |
CONTAINER ID IMAGE COMMAND | CONTAINER ID IMAGE COMMAND | ||
e70a11313849 ubuntu "/ | e70a11313849 ubuntu "/ | ||
Ligne 255: | Ligne 289: | ||
On peut aussi écrire les paramètres de la façon suivante : | On peut aussi écrire les paramètres de la façon suivante : | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker run -itd ubuntu |
</ | </ | ||
==== Se connecter à un conteneur lancé ==== | ==== Se connecter à un conteneur lancé ==== | ||
Ligne 262: | Ligne 296: | ||
* S’attacher à la console du conteneur : **ATTENTION**, | * S’attacher à la console du conteneur : **ATTENTION**, | ||
+ | |||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker attach gallant_kilby |
root@e70a11313849:/# | root@e70a11313849:/# | ||
</ | </ | ||
* Pour quitter le conteneur mais en le laissant s’exécuter en arrière-plan : | * Pour quitter le conteneur mais en le laissant s’exécuter en arrière-plan : | ||
+ | |||
< | < | ||
Ctrl + p + q. | Ctrl + p + q. | ||
Ligne 273: | Ligne 309: | ||
* Pour lancer un processus shell (commande ls par exemple) dans un conteneur en cours d' | * Pour lancer un processus shell (commande ls par exemple) dans un conteneur en cours d' | ||
+ | |||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker exec -it gallant_kilby ls |
bin | bin | ||
boot | boot | ||
dev | dev | ||
... | ... | ||
- | btssio@ubuntudocker: | + | $ |
</ | </ | ||
==== Obtenir la liste des modifications d’un conteneur par rapport à son image de lancement ==== | ==== Obtenir la liste des modifications d’un conteneur par rapport à son image de lancement ==== | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker diff 394beb25ab78 |
C /root | C /root | ||
A / | A / | ||
A / | A / | ||
- | btssio@ubuntudocker: | + | $ |
</ | </ | ||
Cette commande utilise la syntaxe diff/patch en Linux : | Cette commande utilise la syntaxe diff/patch en Linux : | ||
Ligne 322: | Ligne 359: | ||
<code shell> | <code shell> | ||
- | $ docker run -e=IPAPIWEB=192.168.1.200 ubuntu env | + | $ docker run -e=IPAPIWEB="192.168.1.200" |
PATH=/ | PATH=/ | ||
HOSTNAME=2352eb733166 | HOSTNAME=2352eb733166 | ||
Ligne 364: | Ligne 401: | ||
Lors du lancement d’un conteneur, on perd l’accès à la console du serveur Ubuntu. Cette commande permet de lancer le conteneur et de retrouver le shell du serveur sans arrêter le conteneur. | Lors du lancement d’un conteneur, on perd l’accès à la console du serveur Ubuntu. Cette commande permet de lancer le conteneur et de retrouver le shell du serveur sans arrêter le conteneur. | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker run -i -t -d ubuntu |
e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1 | e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1 | ||
- | btssio@ubuntudocker: | + | $ docker ps |
CONTAINER ID IMAGE COMMAND | CONTAINER ID IMAGE COMMAND | ||
e70a11313849 ubuntu "/ | e70a11313849 ubuntu "/ | ||
Ligne 374: | Ligne 411: | ||
Pour accéder ensuite à ce conteneur on utilise la commande attach avec l’identifiant ou le nom du conteneur : | Pour accéder ensuite à ce conteneur on utilise la commande attach avec l’identifiant ou le nom du conteneur : | ||
<code shell> | <code shell> | ||
- | btssio@ubuntudocker: | + | $ docker attach e70a11313849 |
root@e70a11313849:/# | root@e70a11313849:/# | ||
</ | </ |
reseau/docker/utiliserdocker.1700563564.txt.gz · Dernière modification : 2023/11/21 11:46 de techer.charles_educ-valadon-limoges.fr