请教各位达人一个关于docker的问题哈。我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着,我要用的时候就docker attach上去。但是我一跑docker run -d .... /bin/bash,这个容器就运行结束停下来了。这是为毛啊,有啥解决方案没。。。
PHPz2017-04-21 10:57:35
私自身もこの問題に遭遇しました。しかし、別の状況では、docker の実行時にコンテナーが常にバックグラウンドで実行され、リモートでログインして操作できるようになることを望みます。
記事をコピーしました: コンテナへの SSH リモート ログイン
---コンテンツの始まり-----
コンテナを起動した後、一部の操作を実行するために ssh を使用してログインする必要がある場合があります。この目標を達成するには、次の 2 つの点を確保する必要があります:
まずイメージにopenssh-server
サービス
次に、画像を送信します:
リーリー最後に、イメージを実行し、生成されたコンテナをバックグラウンドで実行させます:
リーリーこれで、ssh 経由でコンテナにログインできるようになります。
リーリー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
docker run -i -t CONTAINER_NAME /bin/bash
を実行するだけです。dockerattach よりも多くのパラメータがあると思われる場合は、解決する別名 (alias ): 🎜
リーリー
🎜エイリアスを設定した後、dockerbash
を直接実行してコンテナーの bash に入ります。 🎜PHPz2017-04-21 10:57:35
これはスーパーバイザーを使用して実現できます。また、複数のサービスを同時に開始することもできます。
まず、yum -y install supervisor を使用してソフトウェア パッケージをインストールし、設定ファイル /etc/supervisord.conf を変更します
sshd など、開始するサービスを追加します。
具体的な情報については、次の記事を参照してください: http://openstack.blog.163.com/blog/static/236387267201491734019283/
怪我咯2017-04-21 10:57:35
イメージを構築するための Dockerfile ファイルに次の文を追加することをお勧めします:
CMD tail -f
他のコマンドがある場合
CMD その他のコマンド && tail -f
お役に立てば幸いです