recherche

Maison  >  Questions et réponses  >  le corps du texte

如何让docker以daemon方式运行/bin/bash

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

怪我咯怪我咯2781 Il y a quelques jours919

répondre à tous(5)je répondrai

  • PHPz

    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 :

    • 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修改密码
    

    répondre
    0
  • ringa_lee

    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.

    répondre
    0
  • PHPz

    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/

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-21 10:57:35

    docker run --attach=stdin -d image bash, le paramètre -d désactive stdin par défaut.

    répondre
    0
  • 怪我咯

    怪我咯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

    répondre
    0
  • Annulerrépondre