如何让docker以daemon方式运行/bin/bash
怪我咯
怪我咯 2017-04-21 10:55:35
0
5
913

请教各位达人一个关于docker的问题哈。我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着,我要用的时候就docker attach上去。但是我一跑docker run -d .... /bin/bash,这个容器就运行结束停下来了。这是为毛啊,有啥解决方案没。。。

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(5)
PHPzhong

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

# 官方镜像一般没有安装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修改密码
左手右手慢动作

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.

PHPzhong

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/

Peter_Zhu

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal