コンテナAとBの2つがあります。コンテナAが起動すると、1つのプロセスが実行され、コンテナが停止します。コンテナBは単なるWebアプリケーションです(expressjsなど)。コンテナBからAをキックスタートすることは可能ですか?停止したコンテナを別のコンテナから開始することは可能ですか?
答えて
あなたのホスト上の他のコンテナを生み出すことができるようにドッキングウィンドウへのコンテナのアクセス権を付与することが可能です。あなたは、コンテナ内部で利用可能なdocker
クライアントを持っている場合、あなたはあなたのホスト上でドッキングウィンドウデーモンを制御し、にそれを使用することができます、今
docker run -v /var/run/docker.sock:/var/run/docker.sock --name containerB myimage ...
:あなたは、コンテナ内のドッキングウィンドウソケットを露出させることにより、例えばこれを行いますあなたの "コンテナA"をスポーンする。
セキュリティを考慮する前に、ドッカーへのアクセスはホスト上でroot
にアクセスするのと同じです。つまり、Webアプリケーションにリモート妥協がある場合は、攻撃者のホスト。これは、より完全にin this articleで説明されています。
ドッカーソケットを取り付けることができます。
コンテナA
時刻をstdout(およびログ)に出力して終了します。
docker run --name contA ubuntu date
コンテナB
トリックは、コンテナにドッキングウィンドウのクライアントをインストールし、ホストのドッキングウィンドウのソケットを装着することです。まるでホストからドッカーを使用しているかのように、デーモンと対話します。ドッカーがインストールされると、コンテナAが5秒ごとに再起動されます。
docker run --name contB -v /var/run/docker.sock:/var/run/docker.sock ubuntu bash -c "
apt-get update && apt-get install -y curl &&
curl -sSL https://get.docker.com/ | sh &&
watch --interval 5 docker restart contA"
あなたはコンタがドッカーが本当に長い実行中のサービスのためのものです、とそのログ
docker logs contA
を見ることで呼び出されていることがわかります。メンテナンス、cronジョブなどの短命の "仕事"サービスの指定について、Docker githubの問題で話していますが、何も決定されず、コード化されていません。だから、コンテナが稼働するようにシステムを構築するのが最善です。
私はすぐに私の答えを投稿していないので、@ larsksが最初に来た。とにかく役に立つと思うかもしれないコードがあるので、ここにそれを残しておきます。 – Alkaline
それは動作します。ドッカーをドッカーの中に設置することは良いアイデアかどうかは分かりませんが、それは別の疑問です。 @larsksが最初に登場したので、私はちょうどそのことに目を向ける。 –
それは動作しますが、コードは私にはあまり明確ではありません。私はhttps://get.docker.com/ useに困惑しています。とにかく、ドッカーのコンテナ(apt-get install docker-ce)内にdocker-ceをインストールしてから、「docker restart containername」を使って別のドッカーコンテナを再起動する必要があります – Somum
- 1. ドッキング用のコンテナは、停止または取り外し後に新しいコンテナを開始します
- 2. typed.jsプラグインの開始と停止の制御は可能ですか?
- 3. 後にドラッグ可能な別のコンテナから削除する
- 4. 1つのコンテナがドッカーの作成で停止したときに、すべてのコンテナを停止するにはどうすればよいですか?
- 5. "停止"と "終了"コンテナの違いは何ですか?
- 6. 要素の追加 - 要素がコンテナのオーバーフローを開始したときに追加を停止する
- 7. スクロールバーをコンテナからドキュメントに取り込むことは可能ですか?
- 8. MusicPlayer一時停止と開始から開始
- 9. コンテナ停止時にDockerのMinecraftサーバーを停止する
- 10. ドッカースウォーム - コンテナを停止するAPIメソッド
- 11. WindowsコンテナにVisual Studioをインストールすることは可能です
- 12. コンテナが開始しないのはなぜですか?
- 13. このコンテナを開始せずにDockerコンテナからファイル/フォルダを削除する方法
- 14. MBProgressHUDの開始機能と停止機能を作成する
- 15. アプリの停止時にアップロードを開始することはできますか?
- 16. forループを後方から開始することは可能ですか
- 17. コンテナにメンバーの過負荷を格納することは可能ですか?
- 18. コンテナの静的配列を保持することは可能ですか?
- 19. kubernetes:個々のコンテナにラベルを追加することは可能ですか?
- 20. ENTRYPOINTを使用してコンテナの開始と停止を有効にする方法
- 21. マックスリープ時にDockerコンテナが停止する
- 22. NetflixのSpinnakerを使用してDockerコンテナを展開することは可能ですか?
- 23. Python/Seleniumからjavascriptのスクロール可能なコンテナと対話する
- 24. コンテナから別のコンテナに範囲をコピーする
- 25. Javascript:停止/開始機能を作成しますか?
- 26. 行動を起こすことによって、犠牲になる叙事詩を開始/停止/再開することは可能ですか?
- 27. docker-compose upはコンテナを起動してすぐにコンテナを開始します
- 28. アニメーションの開始と停止
- 29. Dockerコンテナのみ別のアクセス可能
- 30. 別のOSからWindows Azureを開発することは可能ですか?
私はこのヒントを続けました。そして私は手動で 'docker'と' docker-compose'をコンテナにコピーしました。 'docker-compose'はコンテナの内部でうまく動作します。しかし、私は '/ usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1'を私のホストからコンテナにコピーし、次にコンテナ内に' ln -sf/usr/lib /x86_64-linux-gnu/libltdl.so.7.3.1/usr/lib/x86_64-linux-gnu/libltdl.so.7'となります。コンテナの内部: 'ldd/usr/bin/docker'すべてのlibsが解決され、' docker'と 'docker-cocmpose'をコンテナ内で実行できます。 – ifelsemonkey