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édentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:docker1:drf02 [2020/08/10 13:53] adminelearning:workbooks:docker1:drf02 [2021/12/29 10:32] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2020.01**+Version : **2022.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 10: Ligne 10:
  
   * **DOF103 - Gérer les Images Docker**   * **DOF103 - Gérer les Images Docker**
 +    * Contenu du Module
     * LAB #1 - Re-créer une image officielle docker     * LAB #1 - Re-créer une image officielle docker
-      * Utilisation d'un Dockerfile +      * 1.1 - Utilisation d'un Dockerfile 
-      * FROM +      * 1.2 - FROM 
-      * RUN +      * 1.3 - RUN 
-      * ENV +      * 1.4 - ENV 
-      * VOLUME +      * 1.5 - VOLUME 
-      * COPY +      * 1.6 - COPY 
-      * ENTRYPOINT +      * 1.7 - ENTRYPOINT 
-      * EXPOSE +      * 1.8 - EXPOSE 
-      * CMD +      * 1.9 - CMD 
-      * Autres Commandes+      * 1.10 - Autres Commandes
     * LAB #2 - Créer un Dockerfile     * LAB #2 - Créer un Dockerfile
-      * Création et test du script +      * 2.1 - Création et test du script 
-      * Bonnes Pratiques liées au Cache+      * 2.2 - Bonnes Pratiques liées au Cache
  
 =====LAB #1 - Re-créer une image officielle docker===== =====LAB #1 - Re-créer une image officielle docker=====
  
-====Utilisation d'un Dockerfile====+====1.1 - Utilisation d'un Dockerfile====
  
 Bien que la compilation des images soient assuré par Docker Hub, il est tout à fait possible de compiler une image "officielle" à partir d'un Dockerfile : Bien que la compilation des images soient assuré par Docker Hub, il est tout à fait possible de compiler une image "officielle" à partir d'un Dockerfile :
Ligne 77: Ligne 78:
  wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \  wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
  export GNUPGHOME="$(mktemp -d)"; \  export GNUPGHOME="$(mktemp -d)"; \
- gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4;+ gpg --batch --keyserver pgp.mit.edu --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4;
- gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \+ gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
  command -v gpgconf && gpgconf --kill all || :; \  command -v gpgconf && gpgconf --kill all || :; \
  rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \  rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
Ligne 96: Ligne 97:
  export GNUPGHOME="$(mktemp -d)"; \  export GNUPGHOME="$(mktemp -d)"; \
  for key in $GPG_KEYS; do \  for key in $GPG_KEYS; do \
- gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \+ gpg --batch --keyserver pgp.mit.edu --recv-keys "$key"; \
  done; \  done; \
  gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg; \  gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg; \
Ligne 498: Ligne 499:
 Examinons chaque commande dans le Dockerfile : Examinons chaque commande dans le Dockerfile :
  
-====FROM====+====1.2 - FROM====
  
 <file> <file>
Ligne 506: Ligne 507:
 Cette ligne définit l'image à partir de laquelle sera construite notre image. Quand l'image n'est construite à partir d'une autre image, la valeur de **FROM** est **scratch**. Cette ligne définit l'image à partir de laquelle sera construite notre image. Quand l'image n'est construite à partir d'une autre image, la valeur de **FROM** est **scratch**.
  
-====RUN====+====1.3 - RUN====
  
 <file> <file>
Ligne 593: Ligne 594:
 </WRAP> </WRAP>
  
-====ENV====+====1.4 - ENV====
  
 Cette commande permet de fixer la valeur d'une variable d'environnement disponible dans la suite du Dockerfile :  Cette commande permet de fixer la valeur d'une variable d'environnement disponible dans la suite du Dockerfile : 
Ligne 616: Ligne 617:
 **et** dans les conteneurs générés à partir de l'image construite. **et** dans les conteneurs générés à partir de l'image construite.
  
-====VOLUME====+====1.5 - VOLUME====
  
 <file> <file>
Ligne 626: Ligne 627:
 Cette commande expose les répertoires passés en argument afin qu'ils puissent être mappés vers des répertoires sur la machine hôte ou ailleurs, tel que nous avons vu avec l'exemple nginx. Cette commande expose les répertoires passés en argument afin qu'ils puissent être mappés vers des répertoires sur la machine hôte ou ailleurs, tel que nous avons vu avec l'exemple nginx.
  
-====COPY====+====1.6 - COPY====
  
 <file> <file>
Ligne 636: Ligne 637:
 Cette commande permet de récupérer les fichiers dans le contexte et de les copier dans l'image. Cette commande permet de récupérer les fichiers dans le contexte et de les copier dans l'image.
  
-Rappelez-vous de l'avertissement précédent : **Attention** : tous les fichiers dans le contexte sont inclus dans l'image finale, même ceux qui sont inutiles.+**Attention** : tous les fichiers dans le contexte sont inclus dans l'image finale, même ceux qui sont inutiles.
  
 Il est possible d'exclure des fichiers présents dans le contexte en les mettant dans un fichier appelé **.dockerignore** placé dans le contexte. Il est possible d'exclure des fichiers présents dans le contexte en les mettant dans un fichier appelé **.dockerignore** placé dans le contexte.
Ligne 644: Ligne 645:
 </WRAP> </WRAP>
  
-====ENTRYPOINT====+====1.7 - ENTRYPOINT====
  
 <file> <file>
Ligne 694: Ligne 695:
 si la valeur du paramètre passé à entrypoint.sh est **mongod**, le script affecte l'utilisateur mongodb aux répertoires /data/configdb et /data/db puis lance mongo sous l'utilisateur mongodb avec des droits réduits ( gosu ). si la valeur du paramètre passé à entrypoint.sh est **mongod**, le script affecte l'utilisateur mongodb aux répertoires /data/configdb et /data/db puis lance mongo sous l'utilisateur mongodb avec des droits réduits ( gosu ).
  
-Ce fichier finit par "$@" qui indique que si aucune condition n'ait été remplie, la commande est exécutée avec la valeur passée en argument +Ce fichier finit par "$@" qui indique que si aucune condition n'ait été remplie, la commande est exécutée avec la valeur passée en argument.
- +
-<code> +
-root@debian9:~/mongodb# docker rm -fv mongo2 +
-mongo2 +
-root@debian9:~/mongodb# docker run -it --name mongo2 i2tch/mongodb2 /bin/bash +
-root@a2b3a0f53f62:/# pwd +
-+
-root@a2b3a0f53f62:/# exit +
-exit +
-root@debian9:~/mongodb#  +
-</code>+
  
 <WRAP center round important> <WRAP center round important>
-**Important** - Notez que la compilation d'une image se fait à l'intérieur d'un **contexte**. Le **contexte** est le répertoire de build. **Attention** : tous les fichiers dans le contexte sont inclus dans l'image finale, même ceux qui sont inutiles. Dernièrement, notez qu'il peut y avoir plusieurs ENTRYPOINT dans le fichier Dockerfile mais uniquement le dernier est pris en compte.+**Important** - Notez que la compilation d'une image se fait à l'intérieur d'un **contexte**. Le **contexte** est le répertoire de build. Dernièrement, notez qu'il peut y avoir plusieurs ENTRYPOINT dans le fichier Dockerfile mais uniquement le dernier est pris en compte.
 </WRAP> </WRAP>
  
-====EXPOSE====+====1.8 - EXPOSE====
  
 <file> <file>
Ligne 719: Ligne 709:
 </file> </file>
  
-Cette commande permet d'exposer un port à l'extérieur du conteneur :+Cette commande permet d'exposer un port à l'extérieur du conteneur.
  
-<code> +====1.9 - CMD====
-root@debian9:~/mongodb# docker rm -fv mongo2 +
-mongo2 +
-root@debian9:~/mongodb# docker run -d --name mongo2 i2tch/mongodb2 +
-b3380889eb750298710e956f284f291b786f4382465d247ae58f9b73d2d276ca +
-root@debian9:~/mongodb# docker ps -a +
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                NAMES +
-b3380889eb75        i2tch/mongodb2      "docker-entrypoint.s…"   15 seconds ago      Up 15 seconds               27017/tcp            mongo2 +
-bf72bd700870        i2tch/mongodb1      "/bin/bash"              19 minutes ago      Exited (0) 19 minutes ago                        mongo1 +
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   31 minutes ago      Up 29 minutes                                    mongo +
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago   Up About an hour            0.0.0.0:81->80/tcp   suspicious_sanderson +
-4f157e179134        nginx               "nginx -g 'daemon of…"   4 hours ago         Exited (0) 4 hours ago                           stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                           i2tch +
-</code> +
- +
-====CMD====+
  
 <file> <file>
Ligne 746: Ligne 721:
 Ceci représente la valeur du paramètre par défaut si aucun paramètre n'est spécifié à la fin de la commande docker run. Ceci représente la valeur du paramètre par défaut si aucun paramètre n'est spécifié à la fin de la commande docker run.
  
-====Autres Commandes====+====1.10 - Autres Commandes====
  
 Le Dockerfile peut aussi contenir les commandes suivantes : Le Dockerfile peut aussi contenir les commandes suivantes :
Ligne 810: Ligne 785:
  
 <code> <code>
 +root@debian9:~/mongodb# docker rm mongo1
 +mongo1
 root@debian9:~/mongodb# chmod +x docker-entrypoint.sh root@debian9:~/mongodb# chmod +x docker-entrypoint.sh
 root@debian9:~/mongodb# docker build . root@debian9:~/mongodb# docker build .
Ligne 993: Ligne 970:
 =====LAB #2 - Créer un Dockerfile===== =====LAB #2 - Créer un Dockerfile=====
  
-====Création et test du script====+====2.1 - Création et test du script====
  
 Créez un répertoire nommé myDocker : Créez un répertoire nommé myDocker :
Ligne 1208: Ligne 1185:
 </code> </code>
  
-====Bonnes Pratiques liées au Cache====+====2.2 - Bonnes Pratiques liées au Cache====
  
 ===Opérations Non-Idempotentes=== ===Opérations Non-Idempotentes===
Ligne 1342: Ligne 1319:
  
 ----- -----
-<html> + 
-<div align="center"> +Copyright © 2022 Hugh Norris.
-Copyright © 2020 Hugh NORRIS +
-</div> +
-</html>+
Menu