J'ai moi-même rencontré ce problème. Mais dans une situation différente, j'espère que lorsque Docker s'exécute, le conteneur pourra toujours s'exécuter en arrière-plan et me permettre de me connecter à distance pour fonctionner.
J'ai copié l'article : Connexion à distance SSH à un conteneur
----Le contenu commence-----
Après avoir démarré un conteneur, nous devrons peut-être nous connecter en utilisant ssh pour effectuer certaines opérations. Pour atteindre cet objectif, il y a 2 points à garantir :
Le conteneur doit être en cours d'exécution.
openssh-server est démarré.
注意:以下示例是在ubuntu/13.10中完成的
Assurez-vous d'abord que le openssh-serverservice est installé sur l'image
docker run n'est pas une commande qui a été suspendue (comme exécuter top et continuer echo), elle se terminera automatiquement. La commande -d définit detach sur true. Selon la documentation officielle, cela signifie que cette commande est exécutée en arrière-plan, mais elle ne s'exécute pas tout le temps (nous exécutons /bin/bash dans un terminal Linux normal, et c'est le cas). quand il sera terminé. Non, il restera toujours en attente d'une réponse, il n'y a donc vraiment aucun moyen de l'exécuter en mode démon /bin/bash).
Il y a en effet quelques incohérences entre les premiers documents officiels et ceux actuels. Maintenant, il est détaché. Les premiers documents disent que -d est spécifié pour exécuter le conteneur en mode démon. Il peut y avoir des malentendus.
De plus, si vous devez exécuter bash dans le conteneur, exécutez simplement docker run -i -t CONTAINER_NAME /bin/bash directement. Si vous pensez qu'il y a plus de paramètres que docker attach, vous pouvez définir un alias pour résoudre le problème :
.
alias dockerbash='docker run -i -t CONTAINER_ID /bin/bash'
Après avoir défini l'alias, exécutez dockerbash directement pour entrer dans le bash du conteneur.
Ceci peut être réalisé en utilisant le superviseur. Et plusieurs services peuvent être démarrés en même temps.
Installez d'abord le progiciel avec yum -y install superviseur et modifiez le fichier de configuration /etc/supervisord.conf
Ajoutez les services que vous souhaitez démarrer, tels que sshd.
Pour des informations spécifiques, vous pouvez vous référer à cet article : http://openstack.blog.163.com/blog/static/236387267201491734019283/
Il est recommandé d'ajouter une phrase au fichier Dockerfile pour construire l'image : CMD tail -f S'il y a d'autres commandes CMD autres commandes&& tail -f J'espère que ce sera le cas utile pour vous
J'ai moi-même rencontré ce problème. Mais dans une situation différente, j'espère que lorsque Docker s'exécute, le conteneur pourra toujours s'exécuter en arrière-plan et me permettre de me connecter à distance pour fonctionner.
J'ai copié l'article : Connexion à distance SSH à un conteneur
----Le contenu commence-----
Après avoir démarré un conteneur, nous devrons peut-être nous connecter en utilisant ssh pour effectuer certaines opérations. Pour atteindre cet objectif, il y a 2 points à garantir :
Assurez-vous d'abord que le
openssh-server
service est installé sur l'imageEnsuite, soumettez l'image :
Enfin, exécutez l'image et laissez le conteneur généré s'exécuter en arrière-plan :
Maintenant, vous pouvez vous connecter au conteneur via ssh.
Si la commande spécifiée par
docker run
n'est pas une commande qui a été suspendue (comme exécutertop
et continuerecho
), elle se terminera automatiquement. La commande-d
définit detach sur true. Selon la documentation officielle, cela signifie que cette commande est exécutée en arrière-plan, mais elle ne s'exécute pas tout le temps (nous exécutons/bin/bash
dans un terminal Linux normal, et c'est le cas). quand il sera terminé. Non, il restera toujours en attente d'une réponse, il n'y a donc vraiment aucun moyen de l'exécuter en mode démon/bin/bash
).Il y a en effet quelques incohérences entre les premiers documents officiels et ceux actuels. Maintenant, il est détaché. Les premiers documents disent que -d est spécifié pour exécuter le conteneur en mode démon. Il peut y avoir des malentendus.
De plus, si vous devez exécuter bash dans le conteneur, exécutez simplement
.docker run -i -t CONTAINER_NAME /bin/bash
directement. Si vous pensez qu'il y a plus de paramètres que docker attach, vous pouvez définir un alias pour résoudre le problème :Après avoir défini l'alias, exécutez
dockerbash
directement pour entrer dans le bash du conteneur.Ceci peut être réalisé en utilisant le superviseur. Et plusieurs services peuvent être démarrés en même temps.
Installez d'abord le progiciel avec yum -y install superviseur et modifiez le fichier de configuration /etc/supervisord.conf
Ajoutez les services que vous souhaitez démarrer, tels que sshd.
Pour des informations spécifiques, vous pouvez vous référer à cet article : http://openstack.blog.163.com/blog/static/236387267201491734019283/
docker run --attach=stdin -d image bash, le paramètre -d désactive stdin par défaut.
Il est recommandé d'ajouter une phrase au fichier Dockerfile pour construire l'image :
CMD tail -f
S'il y a d'autres commandes
CMD autres commandes&& tail -f
J'espère que ce sera le cas utile pour vous