Maison >Opération et maintenance >Docker >Quelle est la différence entre t et d dans la commande run dans docker ?

Quelle est la différence entre t et d dans la commande run dans docker ?

WBOY
WBOYoriginal
2022-01-28 15:38:188238parcourir

Dans Docker, la commande run est utilisée pour créer un nouveau conteneur et exécuter une commande. La définition du paramètre "-t" peut réaffecter un pseudo terminal d'entrée au conteneur, et la définition du paramètre "-d" exécutera le conteneur dans l'arrière-plan. et renvoie l'ID du conteneur.

Quelle est la différence entre t et d dans la commande run dans docker ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.

Quelle est la différence entre t et d dans la commande run dans docker ?

docker run : Créez un nouveau conteneur et exécutez une commande

Syntaxe

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Description des OPTIONS :

  • -a stdin : Spécifiez la norme Type de contenu d'entrée et de sortie, facultatif STDIN/STDOUT/STDERR ;

  • -d : exécute le conteneur en arrière-plan et renvoie l'ID du conteneur

  • -i : exécute le conteneur en mode interactif, généralement utilisé avec -t;

  • -P : Mappage de port aléatoire, le port interne du conteneur est mappé de manière aléatoire au port de l'hôte

  • -p : Spécifiez le mappage de port, le format est : port hôte (hôte) : port du conteneur

  • -t : Remappez le conteneur Attribuez un pseudo terminal d'entrée, généralement utilisé avec -i ;

  • --name="nginx-lb": Spécifiez un nom pour le conteneur ; 8.8.8.8 : Spécifiez le serveur DNS utilisé par le conteneur, la valeur par défaut est cohérente avec l'hôte ;

  • --dns-search example.com : Spécifie le nom de domaine de recherche DNS du conteneur, la valeur par défaut est cohérente avec l'hôte ;

  • -h "mars" : Spécifie le nom d'hôte du conteneur ;

  • - e username="ritchie" : Définir les variables d'environnement ;

  • --env-file=[] : Lire les variables d'environnement à partir de le fichier spécifié ;

  • --cpuset="0-2" ou --cpuset= "0,1,2" : Liez le conteneur au CPU spécifié à exécuter

  • -m : Définissez le maximum ; utilisation de la mémoire du conteneur ;

  • --net="bridge" : Spécifiez le type de connexion réseau du conteneur, pont/hôte/aucun/conteneur pris en charge : quatre types ; ajouter un lien vers un autre conteneur

  • --expose=[] : ouvrir un port ou un groupe de ports

  • --volume, -v : Lier un volume

  • Par exemple : "Je je veux exécuter un miroir en arrière-plan", lorsque j'ai exécuté la commande suivante

    docker run -d --name server somebody:dockerfile
  • J'ai vérifié si l'opération avait réussi via docker ps, mais j'ai trouvé qu'elle ne s'est pas exécutée avec succès, quelle est la situation ? ? N'est-il pas nécessaire d'utiliser le paramètre -d pour fonctionner en arrière-plan ? En fait, la raison principale est que cette image peut avoir un CMD ajouté à la fin, comme
  • CMD ["/bin/bash"]

    , ce qui signifie que lorsque vous l'exécutez en arrière-plan, le conteneur créé par cette image exécutera d'abord /bin/bash, ce qui signifie que lors de l'exécution en arrière-plan (-d ), le shell se ferme immédiatement. Donc, à moins que la commande ne s'exécute pas au premier plan, le conteneur s'arrêtera immédiatement

  • Solution de contournement

Fournissez un pseudo "tty n" pour -d via -i ou -t

docker run -i -d images:tags
docker run -t -d images:tags
docker run -itd images:tags

Ajoutez tail -f /dev/null au command

En faisant cela, le conteneur ne s'arrêtera pas même si la commande principale s'exécute en arrière-plan car la queue continuera à s'exécuter au premier plan.

docker run -d centos tail -f /dev/null

La même chose est vraie pour l'autre situation (entrer dans le conteneur) Docker recommande officiellement l'utilisation de -i et -t pour qu'il se comporte comme un shell.

docker run -i -t <images:tags>

Apprentissage recommandé : "

Tutoriel vidéo Docker

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn