84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
请教各位达人一个关于docker的问题哈。我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着,我要用的时候就docker attach上去。但是我一跑docker run -d .... /bin/bash,这个容器就运行结束停下来了。这是为毛啊,有啥解决方案没。。。
走同样的路,发现不同的人生
私自身もこの問題に遭遇しました。しかし、別の状況では、docker の実行時にコンテナーが常にバックグラウンドで実行され、リモートでログインして操作できるようになることを望みます。
記事をコピーしました: コンテナへの SSH リモート ログイン
---コンテンツの始まり-----
コンテナを起動した後、一部の操作を実行するために ssh を使用してログインする必要がある場合があります。この目標を達成するには、次の 2 つの点を確保する必要があります:
まずイメージにopenssh-serverサービス
openssh-server
次に、画像を送信します:
最後に、イメージを実行し、生成されたコンテナをバックグラウンドで実行させます:
これで、ssh 経由でコンテナにログインできるようになります。
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)。
docker run
top
echo
-d
/bin を実行します)。通常の Linux ターミナル /bash
/bin/bash
这个地方官方早期和现在的文档也确实有些前后不一致,现在是detach,早期的文档说指定-d以daemon方式来运行容器,可能存在一定的误解。
另外,如果你需要跑容器里的bash,直接运行docker run -i -t CONTAINER_NAME /bin/bash 就可以了,如果觉得参数比docker attach多,可以设置一个别名(alias)来解决:
docker run -i -t CONTAINER_NAME /bin/bash
alias dockerbash='docker run -i -t CONTAINER_ID /bin/bash'
设置好别名后,直接运行dockerbash
dockerbash
これはスーパーバイザーを使用して実現できます。また、複数のサービスを同時に開始することもできます。 まず、yum -y install supervisor を使用してソフトウェア パッケージをインストールし、設定ファイル /etc/supervisord.conf を変更します sshd など、開始するサービスを追加します。
具体的な情報については、次の記事を参照してください: http://openstack.blog.163.com/blog/static/236387267201491734019283/
docker run --attach=stdin -d image bash、-d パラメータはデフォルトで stdin をオフにします。
イメージを構築するための Dockerfile ファイルに次の文を追加することをお勧めします: CMD tail -f他のコマンドがある場合CMD その他のコマンド && tail -fお役に立てば幸いです
私自身もこの問題に遭遇しました。しかし、別の状況では、docker の実行時にコンテナーが常にバックグラウンドで実行され、リモートでログインして操作できるようになることを望みます。
記事をコピーしました: コンテナへの SSH リモート ログイン
---コンテンツの始まり-----
コンテナを起動した後、一部の操作を実行するために ssh を使用してログインする必要がある場合があります。この目標を達成するには、次の 2 つの点を確保する必要があります:
まずイメージに
がインストールされていることを確認してください リーリーopenssh-server
サービス次に、画像を送信します:
リーリー最後に、イメージを実行し、生成されたコンテナをバックグラウンドで実行させます:
リーリーこれで、ssh 経由でコンテナにログインできるようになります。
リーリー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)来解决:设置好别名后,直接运行
確かに、初期の公式ドキュメントと現在の公式ドキュメントの間にはいくつかの矛盾があります。初期のドキュメントでは、デーモンモードでコンテナを実行するために -d が指定されていると書かれています。 🎜 🎜 さらに、コンテナ内で bash を実行する必要がある場合は、dockerbash
docker run -i -t CONTAINER_NAME /bin/bash
を実行するだけです。dockerattach よりも多くのパラメータがあると思われる場合は、解決する別名 (alias ): 🎜 リーリー 🎜エイリアスを設定した後、dockerbash
を直接実行してコンテナーの bash に入ります。 🎜これはスーパーバイザーを使用して実現できます。また、複数のサービスを同時に開始することもできます。
まず、yum -y install supervisor を使用してソフトウェア パッケージをインストールし、設定ファイル /etc/supervisord.conf を変更します
sshd など、開始するサービスを追加します。
具体的な情報については、次の記事を参照してください: http://openstack.blog.163.com/blog/static/236387267201491734019283/
docker run --attach=stdin -d image bash、-d パラメータはデフォルトで stdin をオフにします。
イメージを構築するための Dockerfile ファイルに次の文を追加することをお勧めします:
CMD tail -f
他のコマンドがある場合
CMD その他のコマンド && tail -f
お役に立てば幸いです