2017-06-15 4 views
2

Je lis la spécification de la commande run et voir ce qui suit:Que signifie "attacher à des flux standards" dans docker?

-i: Ne STDIN ouvrir même si pas attaché

et

-a = [] : Joindre à STDIN, STDOUT et/ou STDERR

et

Vous pouvez spécifier laquelle des trois cours d'eau standard (stdin, stdout, stderr) vous souhaitez connecter

Mais je manque de compréhension: qu'est-ce que cela signifie pour "connecter un conteneur à un flux standard?" Quelqu'un peut-il expliquer? Que fait par exemple le paramètre -i?

Répondre

4

Eh bien, STDIN (entrée standard), STDOUT (sortie standard), STDERR (erreur standard) sont trois flux standard. Normalement, STDIN signifie clavier, STDOUT et STDERR signifient l'affichage direct à l'écran. Donc, si vous voulez donner à votre conteneur une entrée du clavier, vous devez le connecter au STDIN. Et si vous voulez que votre conteneur imprime le résultat à l'écran, vous devrez peut-être le connecter à STDOUT et STDERR. Sinon, votre conteneur peut s'exécuter en arrière-plan. Sinon, votre conteneur peut fonctionner en arrière-plan. L'entrée peut provenir, disons, du réseau et la sortie peut être stockée dans un fichier journal.

+0

Et pouvez-vous dire, que signifie «garder STDIN ouvert»? Et qu'est-ce que cela signifie d'être "attaché" ni ce contexte? Pourquoi influence-t-il le flux STDIN? – Skip

1

si vous voulez exécuter une commande sur l'exécution TTY conteneur vous devez fixer un flux standard pour l'entrée, la sortie ou une erreur (STDIN, STDOUT, STDERR).

Vous pouvez donc garder le tty intractif en utilisant la commande -i même si le flux n'est pas attaché.

ou peut exécuter directement attach en utilisant -il {courant id conteneur}/bin/bash

+0

Mais qu'est-ce que cela signifie pour les gens 'peut garder le tty intractif .. si le flux n'est pas attaché' Que puis-je faire, quand le tty est interactif et ** aucun flux n'est attaché **? Qu'est-ce qui change quand tty est interactif et le flux ** est attaché **? tty interactive means - Je peux passer des commandes à container via 'exec', et il sera redirigé vers le conteneur tty? – Skip

+1

yuppp, vous avez raison .... tty interactive signifie - Je peux passer des commandes à conteneur via exec, et il sera redirigé vers le conteneur tty. et il reste tty interactif de sorte que vous pouvez passer commande multiple et l'exécuter sur le tty du conteneur. – Parmatma