Outils pour utilisateurs

Outils du site


docker:utiliser

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
docker:utiliser [2019/09/02 22:48]
techer.charles_0870019y.campus.lyceeconnecte.fr
docker:utiliser [2021/09/05 18:28] (Version actuelle)
techer.charles_educ-valadon-limoges.fr [Récupérer une image dans sa dernière version]
Ligne 157: Ligne 157:
  
 Sur Docker Hub plusieurs Dockerfile sont indiqués pour l’image officielle ubuntu : Sur Docker Hub plusieurs Dockerfile sont indiqués pour l’image officielle ubuntu :
 +{{ :docker:docker_02.png |}}
  
  
    
-Télécharger l’image Docker ubuntu :bionic-20190424 +Télécharger l’image Docker ubuntu :bionic-20210827 
- btssio@ubuntudocker:~$ docker pull ubuntu:bionic-20190424 +<code shell> 
-bionic-20190424: Pulling from library/ubuntu +btssio@ubuntudocker:~$ docker pull ubuntu:bionic-20210827 
-Digest: sha256:d26d529daa4d8567167181d9d569f2a85da3c5ecaf539cace2c6223355d69981 +bionic-20210827: Pulling from library/ubuntu 
-Status: Downloaded newer image for ubuntu:bionic-20190424+e4ca327ec0e7: Pull complete 
 +Digest: sha256:9bc830af2bef73276515a29aa896eedfa7bdf4bdbc5c1063b4c457a4bbb8cd79 
 +Status: Downloaded newer image for ubuntu:bionic-20210827 
 +docker.io/library/ubuntu:bionic-20210827
 btssio@ubuntudocker:~$ docker images btssio@ubuntudocker:~$ docker images
 REPOSITORY  TAG               IMAGE ID      CREATED       SIZE REPOSITORY  TAG               IMAGE ID      CREATED       SIZE
-Ubuntu      bionic-20190424   d131e0fa2585  11 days ago   102MB+Ubuntu      bionic-20210827   d131e0fa2585  11 days ago   102MB
 ubuntu      latest            d131e0fa2585  11 days ago   102MB ubuntu      latest            d131e0fa2585  11 days ago   102MB
 btssio@ubuntudocker:~$ btssio@ubuntudocker:~$
 +</code>
 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 177: Ligne 180:
  
 Pour connaître comment cette image a été construite, cliquez sur le lien du Dockerfile : Pour connaître comment cette image a été construite, cliquez sur le lien du Dockerfile :
- FROM scratch+<code shell> 
 +FROM scratch
 ADD ubuntu-bionic-core-cloudimg-amd64-root.tar.gz / ADD ubuntu-bionic-core-cloudimg-amd64-root.tar.gz /
  
Ligne 183: Ligne 187:
 # overwrite this with 'CMD []' in a dependent Dockerfile # overwrite this with 'CMD []' in a dependent Dockerfile
 CMD ["/bin/bash"] CMD ["/bin/bash"]
 +</code>
 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 ["/bin/bash"] - indique le processus qui doit être lancé par le conteneur et qui est ici un shell Bash.
Ligne 189: Ligne 193:
 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 des quatre couches de l’image ubuntu sur votre serveur Ubuntu.    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 des quatre couches de l’image ubuntu sur votre serveur Ubuntu.   
  
-3.C 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 mode interactif+=== Lancer un conteneur en mode interactif ===
 Pour pouvoir réellement interagir et utiliser le conteneur ubuntu grâce à ce processus de shell Bash qui est lancé, il faut : Pour pouvoir réellement interagir et utiliser le conteneur ubuntu grâce à ce processus de shell Bash qui est lancé, il faut :
-lancer le conteneur en mode interactif pour lui associer une console TTY : paramètre -i, +  * lancer le conteneur en mode interactif pour lui associer une console TTY : paramètre -i, 
-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. 
- btssio@ubuntudocker:~$ docker run -i -t ubuntu+<code shell> 
 +btssio@ubuntudocker:~$ docker run -i -t ubuntu
 root@394beb25ab78:/# ls root@394beb25ab78:/# ls
 bin   dev  home  lib64  mnt  proc  run   srv  tmp  var bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
Ligne 205: Ligne 211:
 docker.txt docker.txt
 root@394beb25ab78:/# root@394beb25ab78:/#
 +</code>
 +Le lancement du conteneur est toujours aussi rapide et le résultat de la commande est différent puisque vous avez le **shell du conteneur** avec comme nom **l’identifiant** du nouveau conteneur lancé.
  
-Le lancement du conteneur est toujours aussi rapide et le résultat de la commande est différent puisque vous avez le shell du conteneur avec comme nom l’identifiant du nouveau conteneur lancé. +Vous êtes identifiés comme **root** sur la VM nommée **394beb25ab78** qui est l’identifiant du nouveau conteneur lancé et qui a servi à attribuer un nom à la VM.
-Vous êtes identifiés comme root sur la VM nommée 394beb25ab78 qui est l’identifiant du nouveau conteneur lancé et qui a servi à attribuer un nom à la VM+
-La commande ls montre l’arborescence de la VM  et non celle du serveur Ubuntu. Un fichier a été créé dans le dossier /root.+
  
-Tapez Exit pour revenir à la machine hôte en sortant du shell et donc du conteneur qui ne faisant que tourner cet unique processus s’arrête.+La commande **ls** montre l’arborescence de la VM  et non celle du serveur Ubuntu. Un fichier a été créé dans le dossier **/root**.
  
 +Tapez **Exit** pour revenir à la machine hôte en sortant du shell et donc du conteneur qui ne faisant que tourner cet unique processus s’arrête.
  
-INPORTANT 
-Toutes les modifications effectuées dans le conteneur lancé, comme la création de ce fichier docker.txt, ne modifie pas l’image ubuntu qui a servi à sa création. Les modifications ne sont faites que dans une nouvelle couche ajoutée par Docker pour gérer les modifications du système de fichiers afin de n’avoir aucun impact sur la couche inférieure, la couche ubuntu. 
-En lançant un nouveau conteneur, vous consterez que le dossier root ne contient pas de fichier docker.txt.  
  
-  Autre commande pour visualiser les conteneurs actifs +<WRAP center round important> 
- btssio@ubuntudocker:~$ docker container ls+**IMPORTANT**\\ 
 +Toutes les** modifications effectuées** dans le conteneur lancé, comme la création de ce fichier docker.txt, ne modifie pas l’image ubuntu qui a servi à sa création. Les modifications ne sont faites que dans une **nouvelle couche** ajoutée par Docker pour gérer les modifications du système de fichiers afin de n’avoir aucun impact sur la couche inférieure, la couche ubuntu. 
 +En lançant un nouveau conteneur, vous consterez que le dossier root ne contient pas de fichier docker.txt. 
 +</WRAP>
  
 +Pour lancer un conteneur arrêté avec son identifiant ou son nom :
 +<code shell>
 +btssio@ubuntudocker:~$ docker start ID_ou_son_nom
 +</code>
 +
 +=== Autre commande pour visualiser les conteneurs actifs ===
 +<code shell>
 +btssio@ubuntudocker:~$ docker container ls
 +</code>
 +
 +=== Lancer un conteneur en mode détaché ===
  
-  Lancer un conteneur en mode détaché 
 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.
- btssio@ubuntudocker:~$ docker run -i -t -d ubuntu+<code shell> 
 +btssio@ubuntudocker:~$ docker run -i -t -d ubuntu
 e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1 e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1
 btssio@ubuntudocker:~$ docker ps btssio@ubuntudocker:~$ docker ps
 CONTAINER ID IMAGE  COMMAND     CREATED        STATUS PORTS NAMES CONTAINER ID IMAGE  COMMAND     CREATED        STATUS PORTS NAMES
 e70a11313849 ubuntu "/bin/bash" 3 seconds ago  Up 2 s       gallant_kilby e70a11313849 ubuntu "/bin/bash" 3 seconds ago  Up 2 s       gallant_kilby
 +</code>
  
 On peut aussi écrire les paramètres de la façon suivante : On peut aussi écrire les paramètres de la façon suivante :
- btssio@ubuntudocker:~$ docker run -itd ubuntu+<code shell> 
 +btssio@ubuntudocker:~$ docker run -itd ubuntu 
 +</code> 
 +=== Se connecter à un conteneur lancé ===
  
- 
-  Se connecter à un conteneur lancé 
 Après le lancement d’un conteneur en mode détaché, il peut être nécessaire de pouvoir accéder à la console du conteneur et donc au shell. Voici deux manières de procéder. Après le lancement d’un conteneur en mode détaché, il peut être nécessaire de pouvoir accéder à la console du conteneur et donc au shell. Voici deux manières de procéder.
  
-S’attacher à la console du conteneur : ATTENTION, en quittant le shell, cela arrête le processus shell et donc le conteneur : +S’attacher à la console du conteneur : **ATTENTION**, en quittant le shell, cela arrête le processus shell et donc le conteneur : 
- btssio@ubuntudocker:~$ docker attach gallant_kilby+<code shell> 
 +btssio@ubuntudocker:~$ docker attach gallant_kilby
 root@e70a11313849:/# root@e70a11313849:/#
 +</code>
 Lancer un processus shell : en quittant la console le conteneur n’est pas arrêté : Lancer un processus shell : en quittant la console le conteneur n’est pas arrêté :
- btssio@ubuntudocker:~$ docker exec -it gallant_kilby+<code shell> 
 +btssio@ubuntudocker:~$ docker exec -it gallant_kilby
 root@e70a11313849:/# root@e70a11313849:/#
- +</code> 
-  Obtenir la liste des modifications d’un conteneur par rapport à son image de lancement +  
- btssio@ubuntudocker:~$ docker diff 394beb25ab78+=== Obtenir la liste des modifications d’un conteneur par rapport à son image de lancement === 
 +<code shell> 
 +btssio@ubuntudocker:~$ docker diff 394beb25ab78
 C /root C /root
 A /root/.bash_history A /root/.bash_history
 A /root/docker.txt A /root/docker.txt
 btssio@ubuntudocker:~$ btssio@ubuntudocker:~$
 +</code>
 +Cette commande utilise la syntaxe diff/patch en Linux :
 +  * D pour les parties d’arborescence supprimées,
 +  * C pour les parties d’arborescence créées  : le dossier /root
 +  * A pour les ajouts : le fichier .bash_history est créé automatiquement pour stocker l’historique des actions effectuées dans le shell, et le fichier docker.txt que vous avez créé manuellement.
  
-Cette commande utilise la syntaxe diff/patch en Linux : +=== Créer une image personnalisée ===
-• D pour les parties d’arborescence supprimées, +
-• C pour les parties d’arborescence créées  : le dossier /root +
-• A pour les ajouts : le fichier .bash_history est créé automatiquement pour stocker l’historique des actions effectuées dans le shell, et le fichier docker.txt que vous avez créé manuellement.+
  
-  Créer une image personnalisée 
 L’image qui a servi à la création d’un conteneur n’est jamais modifiée par ce qui est fait à l’intérieur d’un conteneur. Pour que les modifications puissent faire partie d’une image, il faut créer une nouvelle, dans laquelle une nouvelle couche logicielle sera ajoutée et cette couche supplémentaire contiendra les modifications par rapport à l’image de base.  L’image qui a servi à la création d’un conteneur n’est jamais modifiée par ce qui est fait à l’intérieur d’un conteneur. Pour que les modifications puissent faire partie d’une image, il faut créer une nouvelle, dans laquelle une nouvelle couche logicielle sera ajoutée et cette couche supplémentaire contiendra les modifications par rapport à l’image de base. 
  
Ligne 263: Ligne 287:
  
 Tout d’abord créez un conteneur et personnalisez-le : Tout d’abord créez un conteneur et personnalisez-le :
- +<code shell> 
- btssio@ubuntudocker:~$ docker run -i -t ubuntu+btssio@ubuntudocker:~$ docker run -i -t ubuntu
 root@407248dafa24:/# cd /root root@407248dafa24:/# cd /root
 root@407248dafa24:~# touch docker.txt root@407248dafa24:~# touch docker.txt
Ligne 293: Ligne 317:
 root@407248dafa24:~# exit root@407248dafa24:~# exit
 btssio@ubuntudocker:~$ btssio@ubuntudocker:~$
 +</code>
 En visualisant les conteneurs existants, vous retrouvez celui que vous venez de créer (ID 407248dafa24) avec le nom généré par Docker (festive_sammet) En visualisant les conteneurs existants, vous retrouvez celui que vous venez de créer (ID 407248dafa24) avec le nom généré par Docker (festive_sammet)
- btssio@ubuntudocker:~$ docker ps -a+<code shell> 
 +btssio@ubuntudocker:~$ docker ps -a
 CONTAINER ID IMAGE  COMMAND     CREATED  STATUS       PORTS NAMES CONTAINER ID IMAGE  COMMAND     CREATED  STATUS       PORTS NAMES
 407248dafa24 ubuntu "/bin/bash" 2 m..    Up 2 minutes       festive_sammet 407248dafa24 ubuntu "/bin/bash" 2 m..    Up 2 minutes       festive_sammet
 +</code>
  
 Puis créez votre nouvelle image en utilisant son ID ou son nom et en lui associant un nouveau nom d’image préfixé par une information qui vous identifie :  Puis créez votre nouvelle image en utilisant son ID ou son nom et en lui associant un nouveau nom d’image préfixé par une information qui vous identifie : 
- btssio@ubuntudocker:~$ docker commit festive_sammet techer/ubuntu_nettools+<code shell> 
 +btssio@ubuntudocker:~$ docker commit festive_sammet techer/ubuntu_nettools
 sha256:2cd084ad8053b2c7d5747a7b0975006681981ea9f8e8dfea6f20c77bb361ff25 sha256:2cd084ad8053b2c7d5747a7b0975006681981ea9f8e8dfea6f20c77bb361ff25
 btssio@ubuntudocker:~ $ docker images btssio@ubuntudocker:~ $ docker images
Ligne 308: Ligne 334:
 ubuntu                 latest  d131e0fa2585  11 days ago      102MB ubuntu                 latest  d131e0fa2585  11 days ago      102MB
  
- +</code> 
-Une nouvelle image existe avec comme nom techer/ubuntu_nettools et d’une taille supérieure à celle de ubuntu compte tenu du paquet logiciel net Tools installé.+Une **nouvelle image** existe avec comme nom techer/ubuntu_nettools et d’une **taille supérieure** à celle de ubuntu compte tenu du paquet logiciel net Tools installé.
  
 La création d’un nouveau conteneur à partir de cette nouvelle image montre qu’elle a été personnalisée : La création d’un nouveau conteneur à partir de cette nouvelle image montre qu’elle a été personnalisée :
- btssio@ubuntudocker:~ $ docker run -it techer/ubuntu_nettools+<code shell> 
 +btssio@ubuntudocker:~ $ docker run -it techer/ubuntu_nettools
 root@88085b7f2c50:/# ls /root root@88085b7f2c50:/# ls /root
 docker.txt docker.txt
 root@88085b7f2c50:/# root@88085b7f2c50:/#
 +</code>
 +Ce premier aperçu des possibilités de Docker est destiné à mieux comprendre la solution **Kathara** que vous allez ensuite utiliser. Cette solution utilise Docker et des scripts python pour faciliter la création et la gestion des VMs pour maquetter des infrastructures de réseau et de services.
  
-Ce premier aperçu des possibilités de Docker est destiné à mieux comprendre la solution Kathara que vous allez ensuite utiliser. Cette solution utilise Docker et des scripts python pour faciliter la création et la gestion des VMs pour maquetter des infrastructures de réseau et de services.+==== Quelques autres commandes de Docker ====
  
-3.D Quelques autres commandes de Docker +=== Supprimer un conteneur === 
-  Supprimer un conteneur +<code shell> 
- docker rm [identifiant ou nom du conteneur]+docker rm [identifiant ou nom du conteneur] 
 +</code> 
 +=== Faire le ménage ===
  
-  Faire le ménage 
 La commande system et sa sous-commande prune permettant de réaliser le ménage dans les conteneurs arrêtés, les images orphelines et d’autres ressources a priori non utilisées, sans supprimer les images.  La commande system et sa sous-commande prune permettant de réaliser le ménage dans les conteneurs arrêtés, les images orphelines et d’autres ressources a priori non utilisées, sans supprimer les images. 
- docker system prune+<code shell> 
 +docker system prune 
 +</code> 
 +=== Supprimer une image ===
  
-  Supprimer une image 
 Les conteneurs qui utilisent cette image doivent au préalable avoir été supprimés. Le paramètre -f force cependant la suppression si cela n’est pas le cas. Les conteneurs qui utilisent cette image doivent au préalable avoir été supprimés. Le paramètre -f force cependant la suppression si cela n’est pas le cas.
 +<code shell>
 +docker rmi [identifiant ou nom de l’image]
 +</code>
  
- docker rmi [identifiant ou nom de l’image]+=== Lancer un conteneur avec un nom donné === 
 +<code shell> 
 +docker run --name=[nom fourni] [image] 
 +</code>
  
-  Lancer un conteneur avec un nom donné +=== Lancer un conteneur en mode détaché ===
- docker run --name=[nom fourni] [image]+
  
-  Lancer un conteneur en mode détaché 
 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.
- btssio@ubuntudocker:~$ docker run -i -t -d ubuntu+<code shell> 
 +btssio@ubuntudocker:~$ docker run -i -t -d ubuntu
 e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1 e70a11313849c4c2ce8beebe72935368b909759ab5eb4e2c2f1bcf715c1a2bd1
 btssio@ubuntudocker:~$ docker ps btssio@ubuntudocker:~$ docker ps
 CONTAINER ID IMAGE  COMMAND     CREATED        STATUS PORTS NAMES CONTAINER ID IMAGE  COMMAND     CREATED        STATUS PORTS NAMES
 e70a11313849 ubuntu "/bin/bash" 3 seconds ago  Up 2 s       gallant_kilby e70a11313849 ubuntu "/bin/bash" 3 seconds ago  Up 2 s       gallant_kilby
 +</code>
 +=== Se connecter à un conteneur lancé ===
  
- 
-  Ss connecter à un conteneur lancé 
 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 :
- btssio@ubuntudocker:~/Documents/lab_exercice$ docker attach e70a11313849+<code shell> 
 +btssio@ubuntudocker:~/Documents/lab_exercice$ docker attach e70a11313849
 root@e70a11313849:/# root@e70a11313849:/#
 +</code>
  
-  Arrêter un conteneur +=== Arrêter un conteneur === 
- docker stop [conteneur]+<code shell> 
 +docker stop [conteneur] 
 +</code>
  
-  Démarrer un conteneur arrêté +=== Démarrer un conteneur arrêté === 
- docker start [conteneur]+<code shell> 
 +docker start [conteneur] 
 +</code>
  
 +====== Retour Accueil SISR3 ======
  
 +  * [[sisr3:accueil|SISR3]]
docker/utiliser.1567457302.txt.gz · Dernière modification: 2019/09/02 22:48 de techer.charles_0870019y.campus.lyceeconnecte.fr