Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. DevOps
Code

Docker de Ground Up: Travailler avec des conteneurs, Partie 2

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called Docker from the Ground Up: Working with Containers.
Docker From the Ground Up: Working With Containers, Part 1

French (Français) translation by New Lune (you can also view the original English article)

Il s'agit de la deuxième partie d'une série en deux parties concernant le travail avec les conteneurs Docker. Dans la première partie, nous nous sommes concentrés sur les nombreuses façons et les options d'exécuter une image et comment l'hôte peut interagir avec un conteneur Docker.

Dans cette partie, nous couvrons la liste, le démarrage, l'arrêt et le redémarrage des conteneurs, ainsi que l'exécution de commandes sur les conteneurs en cours d'exécution. En particulier, vous apprendrez la différence entre les conteneurs exécutés et arrêtés (sortés) et la façon de contrôler précisément les informations et les affichages lorsque vous énumérez vos conteneurs en filtrant et en formant.

Ensuite, vous obtiendrez une expérience pratique de l'arrêt, du démarrage, du redémarrage et de l'attachement à vos conteneurs. Enfin, vous exécuterez des commandes ponctuelles ainsi que d'obtenir un accès shell interactif à un conteneur en cours d'exécution.

Avant de commencer, assurez-vous que Docker est installé correctement dans votre environnement. Selon la façon dont il est installé et votre utilisateur, vous devrez peut-être l'exécuter en tant que sudo. Je saute le sudo.

Liste des conteneurs

Lorsque vous travaillez avec des conteneurs, vous souhaitez souvent répertorier, afficher et filtrer vos conteneurs. La commande docker ps est la clé, et elle comporte plusieurs options intéressantes.

Exécuter des conteneurs

La commande la plus élémentaire est la fonction docker ps simple sans arguments, qui montre tous les conteneurs en cours d'exécution.

Vous obtenez beaucoup d'informations sur chaque conteneur, y compris l'ID de conteneur, l'image, la commande, lors de sa création, son état actuel, ses ports et ses noms. C'est un peu difficile à analyser en raison de l'emballage. Nous verrons plus tard comment filtrer et formater la sortie. Notez que la commande est tronquée (ainsi que l'identifiant du conteneur). Pour afficher la commande complète, ajoutez --no-trunc:

Maintenant, la commande complète est visible: nginx -g 'daemon off;'

Tous les conteneurs

Comme vous le rappelez, Docker garde les conteneurs arrêtés (sauf si vous les avez courus avec --rm). L'ajout de -a montre tous les conteneurs:

Mise en forme

La sortie de docker ps peut être trop verbose et montre souvent beaucoup de champs qui ne sont pas intéressants. Vous pouvez utiliser le formatage Go-template pour afficher uniquement les champs qui vous intéressent. Voici le nom et la commande:

Cela fonctionne, mais pour le présenter avec les noms de champs, ajoutez "table" au début de la chaîne de format:

Le nom du format de l'identifiant du conteneur (non sélectionné ici) est {{.ID}} (tous les caractères).

Filtration

La commande docker ps prend en charge de nombreux filtres. Ils sont assez simples à utiliser. La syntaxe est -f"<filter>=<value>". Les filtres pris en charge sont id, label, name, sort, status, ancestor, before, since, isolation, network and health.

Voici le filtrage par le nom du conteneur et ne montre que le conteneur busybox:

Le -q Flag

Si tout ce que vous voulez, c'est l'identifiant du conteneur, utilisez -q flag (drapeau silencieux). C'est plus simple que --format 'table {{.ID}}'. Ceci est souvent nécessaire lorsque vous souhaitez effectuer des opérations sur plusieurs conteneurs (vous verrez un exemple plus tard).

Arrêt, démarrage et redémarrage des conteneurs

Vous pouvez arrêter d'utiliser des conteneurs et démarrer un conteneur arrêté. Il existe plusieurs différences entre le démarrage d'un conteneur arrêté et l'exécution d'une nouvelle instance de la même image:

  • Vous utilisez les mêmes variables d'environnement, volumes, ports et autres arguments de la commande d'exécution d'origine.
  • Vous ne devez pas créer encore un autre conteneur.
  • Si l'instance arrêtée a modifié son système de fichiers, le conteneur démarré utilisera le même.

Arrêtons le conteneur nginx et démarrez-le. Lorsque vous vous référez à un conteneur, vous pouvez utiliser son nom ou un préfixe sans ambiguïté de son identifiant. Je nomme généralement mes conteneurs à long terme, donc j'ai une poignée significative et je n'ai pas à faire face aux noms générés automatiquement ou aux préfixes d'ID des conteneurs de Docker.

OK. Nginx est arrêté (l'état est "Exited"). Commençons:

Le redémarrage d'un conteneur courant est une autre option, ce qui équivaut à docker stop suivi de docker start.

$ docker restart nginx

Fixation à un conteneur courant

Lorsque vous démarrez un conteneur arrêté, ou si vous avez couru votre conteneur en mode détaché (argument de ligne de commande -d), vous ne pouvez pas voir la sortie. Mais vous pouvez vous y attacher.

Retrait des conteneurs

Vous pouvez supprimer les conteneurs arrêtés avec la commande: docker rm <container id or name>

Si vous souhaitez supprimer un conteneur en cours d'exécution, vous pouvez l'arrêter d'abord ou utiliser l'argument de ligne de commande -f (force):

Si vous souhaitez supprimer tous les conteneurs, voici un bon extrait:

docker rm -f $(docker ps -aq)

Si vous souhaitez supprimer uniquement le conteneur arrêté, retirez le drapeau -f (force).

Exécuter une commande à l'intérieur d'un conteneur en cours d'exécution

Docker exécute un seul processus dans un conteneur, mais vous pouvez exécuter des commandes supplémentaires contre un conteneur en cours d'exécution. Il est très semblable à fournir une commande personnalisée à la commande de docker run, sauf que, dans ce cas, il se déplace côte à côte avec la commande run.

Commandes simples

L'exécution d'une commande simple se fait par l'intermédiaire de docker exec. Vous fournissez un identifiant ou un nom de conteneur en cours d'exécution et la commande que vous souhaitez exécuter. Voyons le fichier nginx.conf dans le conteneur nginx et voyons combien de processus de travail sont configurés.

Shell interactif

L'une des meilleures techniques de dépannage avec les conteneurs Docker consiste à se connecter à un shell interactif et à explorer le système de fichiers interne. Pour attacher stdin et avoir un tty, vous devez fournir les arguments de ligne de commande -i -t (peuvent être groupés comme -it) et ensuite le nom d'un exécutable shell (généralement bash).

Vous finissez avec l'accès shell à votre conteneur. Voici un exemple de vérification des processus du travail de façon interactive à partir de "à l'intérieur" du conteneur.

Conclusion

Docker est une plate-forme puissante, et comme le conteneur est son unité de travail, il fournit beaucoup d'outils pour gérer et travailler avec des conteneurs. J'ai décrit la plupart des aspects importants du travail avec les conteneurs, mais il existe de nombreuses fonctionnalités, options et nuances plus avancées pour les commandes que j'ai abordées, ainsi que certaines commandes supplémentaires.

Si vous travaillez en étroite collaboration avec les conteneurs Docker, prenez le temps de plonger et d'apprendre tout sur eux. Il sera payant généreusement.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.