質問: 実現したいこと -------- 簡単な状況から説明するとこのような形です。 * コンテナ A : タスク管理用のWEBサイト * コンテナ B : タスクを実行するコンテナ コンテナAはタスクの実行ボタンがあり、このボタンをクリックすることをトリガーとして、コンテナBで実際にタスクを実行する、といったものです。 試したこと ------ * コンテナBにAPIサーバーを立てて、コンテナAからのHTTPリクエストを元にタスクを実行する。 ただ、これでもいいのですが、コンテナBのようなタスク実行のコンテナが大量に増えた時、APIサーバーのコンテナが増えていくのはあまりうれしくありません。 考えたこと ------ それで、考えたのが、コンテナAからコンテナBが起動(停止)できれば、entrypointからでも起動時に発火させることができるので、タスクが増えても、その処理で閉じたコンテナが出来上がるのでエコかなと。 このあたり、おそらくSwarmやminikubeなどで実現できないかと思い、色々と調べてみたのですが、どのようなキーワードで調べて見ているもののなかなか見つけられません。 ほしい回答 ------ したがって、現状、どのようなキーワードで検索すれば、**実現したいこと** に記述した内容を実装できる資料が見つかるのか、が欲しているものです。ただし、HTTPリクエストで頑張るは除く。 知見をお持ちの方、いらっしゃいましたらどうか教えてください。 よろしくお願いします。 ### 目を通したもの * Execute command from a container to another container? * Docker Engine API (v1.32) * Docker Swarm API
回答: Docker のAPIを呼び出すのが簡単なのではないでしょうか。 コンテナA側にPython を入れてそこからAPIを呼び出してコンテナを起動すると言うのはどうですか? Develop with Docker Engine SDKs and API SDK and API quickstart の Python のタブを見ると、3行で run できそうです。コンテナから自分のホストのAPIを呼び出すので、そこにHTTPを通す必要があるかと思われます。 ちょっと気になるのは > > コンテナBのようなタスク実行のコンテナが大量に増えた時、APIサーバーのコンテナが増えていくのはあまりうれしくありません。 > > > と書かれていますが Docker コンテナの起動はそれほど軽いものではありません。リソースをコンテナで分離して、コンテナの起動・終了を繰り返そうと考えておられるのであれば、方針自信見直されたほうが良いかと思います。APIサーバのコンテナを常駐させるほうが性能を稼ぎやすいように思います。