‫Pour ce cours, vous devez savoir comment démarrer un conteneur de cours précédents.
‫Nous venons de terminer la dernière conférence en parlant de voir ce qui se passe dans un conteneur de l'extérieur.
‫Il s’agit tout simplement de rentrer dans un conteneur pour manipuler l’intérieur. Il y a quelques commandes que nous
‫pouvons utiliser.
‫Le premier est un conteneur exécuté avec un -it.
‫Nous allons parler de la façon dont cela fonctionne pour obtenir un shell dans le conteneur.
‫Ensuite, pour exécuter les conteneurs sur lesquels vous souhaitez exécuter un deuxième processus, vous pouvez également utiliser
‫l'exécutif du conteneur, et nous en montrerons plusieurs exemples.
‫Ensuite, nous allons mentionner quelques différences entre une distribution Linux classique, telle que Ubuntu, pour
‫une installation sur une machine virtuelle ou sur du matériel.
‫Et ensuite, à quoi ressemblent ces distributions Linux dans un conteneur.
‫Commençons.
‫Regarder dans un conteneur de l'extérieur est parfois très pratique.
‫Mais l'une des premières questions que les gens me posent souvent est la suivante: comment entrer dans le conteneur et
‫comment y accéder en direct depuis la ligne de commande.
‫Parfois, les gens confondent cela avec le souhait de disposer d’un serveur SSH dans leur conteneur pour pouvoir y entrer
‫en ssh.
‫Mais nous n’avons pas réellement besoin de le faire, car nous disposons de plusieurs commandes nous permettant d’obtenir
‫un shell à l’intérieur du conteneur lui-même pendant son exécution.
‫Le premier est simplement la commande d'exécution du conteneur docker.
‫Mais nous allons spécifier quelques options supplémentaires.
‫Nous allons faire un -it.
‫Il s'agit en réalité de deux options distinctes.
‫Si je montre juste l'aide très rapidement, vous pouvez voir que le t nous donne en fait un pseudo tty ou une
‫invite similaire à ce que vous auriez avec ssh.
‫Et puis, si nous faisons défiler jusqu'à i, c'est
‫vraiment ce qui nous permet de garder cette session ouverte afin de pouvoir continuer à exécuter plus de commandes.
‫Si nous faisons un conteneur Docker, exécutez -it, puis un autre nginx. Appelons cela un proxy.
‫Ensuite, nous allons devoir spécifier une autre commande.
‫Si vous vous rappelez au début de cette section où nous avons parlé du format de la ligne
‫de commande de docker, lorsque vous exécutez un conteneur de docker, comme vous pouvez le voir à travers l'aide, ici à la fin, après
‫l'image, vous avez commande et arguments facultatifs que vous pouvez envoyer à ce nouveau conteneur que vous êtes sur
‫le point de commencer à lui indiquer quoi exécuter. L'image contient une commande par défaut que nous verrons plus
‫tard comment configurer.
‫Mais si vous souhaitez modifier ce qui a été exécuté au démarrage, vous pouvez le faire directement à partir de la ligne d'exécution.
‫Disons simplement Bash. Parce que Bash est l’un des shells les plus courants que vous trouverez habituellement dans un
‫conteneur qui vous donnera un shell avec lequel travailler.
‫Regarde ça. Je suis dans une invite.
‫Vous remarquerez que mon invite indique root, qui est l'utilisateur avec lequel le conteneur a démarré. Cela ne signifie pas réellement que je suis
‫root sur l'hôte.
‫Cela signifie simplement que j'agis en tant que racine sur le conteneur.
‫Ce numéro après est en fait l'identifiant du conteneur.
‫Si je fais un ls -al, je reçois une liste complète de tout où je suis.
‫Et vous pouvez voir que je suis dans le chemin racine du système de fichiers à l'intérieur du conteneur.
‫En fait, je regarde tous les fichiers à l'intérieur du conteneur qui est basé sur l'image Nginx.
‫À partir de là, je pourrais changer les fichiers de configuration,
‫télécharger des paquets sur Internet et faire à peu près n'importe quelle opération administrative courante
‫à partir d'un shell normal.
‫Pour sortir du shell lorsque vous avez terminé, je vais taper exit, comme vous le feriez avec n'importe quel shell, et maintenant
‫ce conteneur est arrêté.
‫Si nous fabriquions réellement un conteneur docker, vous ne le verriez pas ici.
‫Rappelez-vous, nous l'avons appelé proxy.
‫Donc je devais faire un -a.
‫Et c'est là. Maintenant, voyez la commande qu'il a exécutée. La commande par défaut pour un conteneur Nginx consiste à
‫exécuter le programme Nginx lui-même.
‫Mais lorsque nous avons tapé notre dernière commande, nous avons changé le programme par défaut pour qu'il soit réellement
‫Bash, ce qui nous a donné notre shell. Lorsque nous sommes sortis du shell, le conteneur s’est arrêté. Parce que le conteneur s ne s'exécute que
‫tant que la commande exécutée au démarrage est exécutée. Depuis que nous l'avons changé en Bash, il suffit simplement de quitter Bash,
‫quittez-le. Maintenant,
‫que se passe-t-il si j'utilisais une distribution complète de Linux au lieu de réellement utiliser Nginx? Faisons un Ubuntu
‫complet.
‫En fait, il va télécharger l'image Ubuntu et me placer dans l'invite de ce nouveau conteneur.
‫Si vous avez déjà utilisé Ubuntu, vous connaissez le gestionnaire de paquets apt.
‫Donc je peux utiliser ça ici. Tout comme je le ferais dans un serveur Ubuntu standard. Je pourrais en fait
‫installer quelque chose d'apt-get
‫install -y
‫curl.
‫La particularité d'Ubuntu et des autres distributions à l'intérieur d'un conteneur est qu'elles sont généralement très minimes.
‫Un live CD ou un téléchargement de l'image ISO d'Ubuntu que vous auriez normalement placé sur une machine virtuelle
‫contiendra beaucoup plus de logiciels installés par défaut qu'un conteneur Ubuntu qui est vraiment une version très minimale
‫d'Ubuntu que vous pouvez toujours ajouter davantage. logiciel avec le gestionnaire de paquets apt.
‫Alors maintenant, ce conteneur en cours d'exécution a curl installé et je peux l'utiliser comme je le ferais sur une machine locale.
‫Une fois que je sors à nouveau du shell, cela arrêtera réellement le conteneur. conteneur docker
‫ls. Vous remarquez que je ne le vois pas. Il y a cette image Ubuntu que nous venons d'exécuter.
‫Si je recommençais ce conteneur, il y aurait curl installé.
‫Mais si je créais un nouveau conteneur à partir de l'image Ubuntu, la ligne de commande curl de ce conteneur différent
‫ne serait pas installée.
‫Et si nous voulions réexécuter ce conteneur et y remettre Bash à nouveau.
‫Nous pourrions utiliser la commande de démarrage du conteneur Docker.
‫Vous remarquerez que c'est un peu différent lorsque nous commençons un conteneur existant, mais c'est similaire
‫à celui-ci ... c'est juste un ai.
‫Ensuite, le nom de notre conteneur Ubuntu. Vous remarquerez que nous sommes de retour dans le jeu et
‫que je peux relancer Google et que cela fonctionne.
‫Si je sors, ça l'arrête encore.
‫Et si je veux réellement voir le shell dans un conteneur en cours d'exécution qui exécute déjà quelque
‫chose comme MySQL ou Nginx.
‫Nous pouvons le faire également.
‫Et c'est en utilisant la commande exec. conteneur docker exec.
‫Et vous pouvez voir que nous avons quelques options ici.
‫Et le plus commun est ... Supposons que je souhaite accéder au conteneur MySQL car je
‫dois effectuer des tâches administratives sur MySQL lui-même.
‫Je pourrais le refaire puis le nom du conteneur. Ensuite, le programme que je veux exécuter.
‫Et dans ce cas encore, c'est Bash et je suis maintenant dans le conteneur avec MySQL.
‫Je peux réellement faire un ps aux directement à l'intérieur du conteneur qui liste les processus. Cela va bien sûr me montrer le démon
‫MySQL qui s'exécute en arrière-plan, ainsi que le processus Bash dans lequel je travaille
‫actuellement, ainsi que la commande ps que
‫je viens d'exécuter. Dans ce shell, je pouvais accéder directement à MySQL avec la ligne de commande mysql. Vous remarquerez que lorsque je quitte
‫ce shell Bash et que je fais un ls, MySQL est toujours en cours d'exécution. Étant donné que l'exécutif du conteneur docker exécute en réalité un processus
‫supplémentaire sur un conteneur en cours d'exécution existant, cela n'affectera
‫pas le processus racine du démon MySQL. Essayons un de plus.
‫Comme vous pouvez le voir ici, ceci est très utile pour sauter dans des conteneurs lorsque vous
‫avez besoin de résoudre un problème ou de modifier quelque chose légèrement sur un système en fonctionnement, ainsi que d'utiliser des conteneurs
‫de différentes distributions pour vous fournir l'environnement que vous auriez si vous aviez une machine complète comme un Ubuntu
‫ou un Alpine.
‫Maintenant c'est quoi Alpine? Nous n'avons pas mentionné Alpine auparavant. Alpine est une autre distribution de Linux, mais
‫Alpine est conçu pour être très petit.
‫En réalité, sa taille ne dépasse pas 5 Mo.
‫Si je tire un docker alpin, la dernière image Alpine sera affichée et si je fais une image docker ls,
‫vous pouvez réellement voir à quel point l'image Alpine est comparée à celle d'Ubuntu.
‫La particularité d’Alpine est qu’il dispose également de son propre gestionnaire de paquets.
‫Vous verrez donc Alpine comme une option de Docker Hub, beaucoup dans la section suivante lorsque nous passerons en revue les images
‫et Docker Hub.
‫Mais pour le moment, faisons un shell Bash dans Alpine. conteneur docker run -it alpine bash.
‫Maintenant, qu'est-ce qui vient de se passer ici?
‫Pourquoi suis-je entré là-bas?
‫Cela me dit que le processus de conteneur commence et que le fichier exécutable bash
‫est introuvable dans le chemin. Et ce que cela signifie vraiment, c'est que Bash n'est pas dans le conteneur.
‫Et cela nous ramène au concept selon lequel nous ne pouvons exécuter que des éléments du conteneur qui existe déjà dans
‫son
‫image lorsque vous l'avez démarré.
‫Ou peut-être quelque chose que vous avez ajouté plus tard via les commandes exec ou run.
‫Mais dans ce cas, comment pourrais-je entrer dans l'image alpine?
‫Eh bien, Alpine est si petit qu’il ne contient pas vraiment de Bash. Mais il a sh. Nous pouvons donc remplacer la commande
‫par sh, qui n'est pas aussi complet que Bash, mais nous permet de rentrer directement dans le conteneur.
‫Si vous recherchiez Alpine Linux sur Internet, vous apprendrez que son gestionnaire de paquets est
‫apk et nous pourrions en fait l'utiliser pour installer Bash si nous en avions vraiment besoin.
‫Juste pour récapituler très rapidement ce que nous avons appris dans cette leçon.
‫Nous avons entendu parler de l'option -it pour l'exécution du conteneur, ce qui nous donne l'équivalent d'un shell interactif
‫pour faire des choses dans le conteneur comme si nous étions ssh'd sur un serveur quelconque.
‫Nous avons ensuite appris
‫une nouvelle commande pour l'exécutif de conteneur docker avec le même résultat que l'exécution, mais le fait sur un
‫conteneur existant en cours d'exécution qui ne démarre pas un nouveau conteneur.
‫Enfin, nous avons appris un peu plus sur Alpine et sur sa différence par rapport aux principales distributions Linux
‫et sur la taille réelle de 4 Mo, idéale pour les images de conteneur.