検索

ホームページ  >  に質問  >  本文

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

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

怪我咯怪我咯2778日前915

全員に返信(5)返信します

  • PHPz

    PHPz2017-04-21 10:57:35

    私自身もこの問題に遭遇しました。しかし、別の状況では、docker の実行時にコンテナーが常にバックグラウンドで実行され、リモートでログインして操作できるようになることを望みます。

    記事をコピーしました: コンテナへの SSH リモート ログイン

    ---コンテンツの始まり-----

    コンテナを起動した後、一部の操作を実行するために ssh を使用してログインする必要がある場合があります。この目標を達成するには、次の 2 つの点を確保する必要があります:

    • コンテナが実行されている必要があります。
    • opensshサーバーが起動します。
    リーリー

    まずイメージにopenssh-serverサービス

    がインストールされていることを確認してください リーリー

    次に、画像を送信します:

    リーリー

    最後に、イメージを実行し、生成されたコンテナをバックグラウンドで実行させます:

    リーリー

    これで、ssh 経由でコンテナにログインできるようになります。

    リーリー

    返事
    0
  • ringa_lee

    ringa_lee2017-04-21 10:57:35

    docker run 指定されたコマンドがハングしているコマンド (top を実行し、常に echo を実行している場合など) ではない場合、コマンドは自動的に終了します。 。公式ドキュメントによると、 -d コマンドは detach を true に設定します。これは、このコマンドがバックグラウンドで実行されることを意味しますが、常に実行されるわけではありません (/bin を実行します)。通常の Linux ターミナル /bash は一度実行すると終了します。応答を待ってハングアップすることはないため、実際には /bin/bash をデーモン モードで実行する方法はありません。 。 docker run指定的命令如果不是那些一直挂起的命令(比如运行top,不断echo),就是会自动退出的。-d命令是设置detach为true,根据官方的文档,意思是让这个命令在后台运行,但并不是一直运行(我们在一个正常的Linux Terminal中运行/bin/bash,运行完了也就完了,不会一直挂着等待响应的,所以确实没办法用daemon方式来跑/bin/bash)。

    这个地方官方早期和现在的文档也确实有些前后不一致,现在是detach,早期的文档说指定-d以daemon方式来运行容器,可能存在一定的误解。

    另外,如果你需要跑容器里的bash,直接运行docker run -i -t CONTAINER_NAME /bin/bash 就可以了,如果觉得参数比docker attach多,可以设置一个别名(alias)来解决:

    alias dockerbash='docker run -i -t CONTAINER_ID /bin/bash'
    

    设置好别名后,直接运行dockerbash

    確かに、初期の公式ドキュメントと現在の公式ドキュメントの間にはいくつかの矛盾があります。初期のドキュメントでは、デーモンモードでコンテナを実行するために -d が指定されていると書かれています。 🎜 🎜 さらに、コンテナ内で bash を実行する必要がある場合は、docker run -i -t CONTAINER_NAME /bin/bash を実行するだけです。dockerattach よりも多くのパラメータがあると思われる場合は、解決する別名 (alias ): 🎜 リーリー 🎜エイリアスを設定した後、dockerbash を直接実行してコンテナーの bash に入ります。 🎜

    返事
    0
  • PHPz

    PHPz2017-04-21 10:57:35

    これはスーパーバイザーを使用して実現できます。また、複数のサービスを同時に開始することもできます。
    まず、yum -y install supervisor を使用してソフトウェア パッケージをインストールし、設定ファイル /etc/supervisord.conf を変更します
    sshd など、開始するサービスを追加します。

    具体的な情報については、次の記事を参照してください: http://openstack.blog.163.com/blog/static/236387267201491734019283/

    返事
    0
  • 天蓬老师

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

    docker run --attach=stdin -d image bash、-d パラメータはデフォルトで stdin をオフにします。

    返事
    0
  • 怪我咯

    怪我咯2017-04-21 10:57:35

    イメージを構築するための Dockerfile ファイルに次の文を追加することをお勧めします:
    CMD tail -f
    他のコマンドがある場合
    CMD その他のコマンド && tail -f
    お役に立てば幸いです

    返事
    0
  • キャンセル返事