Maison > Questions et réponses > le corps du texte
请教各位达人一个关于docker的问题哈。我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着,我要用的时候就docker attach上去。但是我一跑docker run -d .... /bin/bash,这个容器就运行结束停下来了。这是为毛啊,有啥解决方案没。。。
PHPz2017-04-21 10:57:35
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 :
注意:以下示例是在ubuntu/13.10中完成的
Assurez-vous d'abord que le openssh-server
service est installé sur l'image
# 官方镜像一般没有安装ssh服务端,so,需要安装一个
apt-get install openssh-server
# 设置一个初始密码
passwd 123
...
Ensuite, soumettez l'image :
docker commit CONTAINER_ID NAME/VERSION
Enfin, exécutez l'image et laissez le conteneur généré s'exécuter en arrière-plan :
# 第一个-d表示让容器在后台运行
# 末尾的-D表示启动ssh的daemon模式,不然容器启动后立刻就变为停止状态了
docker run -d NAME/VERSION /etc/init.d/ssh start -D
Maintenant, vous pouvez vous connecter au conteneur via ssh.
# 查询容器IP
docker inspect CONTAINER_ID | grep IP
# 登入
ssh root@IP
# 输入密码 123完成登陆
# 为保证安全,请即刻用passwd修改密码
ringa_lee2017-04-21 10:57:35
Si la commande spécifiée par
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.
PHPz2017-04-21 10:57:35
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/
天蓬老师2017-04-21 10:57:35
docker run --attach=stdin -d image bash, le paramètre -d désactive stdin par défaut.
怪我咯2017-04-21 10:57:35
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