ユーザーが docker を使用して Web アプリケーションを管理できるようにするにはどうすればよいでしょうか?

ユーザーが docker を使用して Web アプリケーションを管理できるようにするにはどうすればよいでしょうか?

私の会社では、Web ホスティングに関して、フロントエンドとしてリバース プロキシを使用し、各 Web アプリケーションに Docker コンテナーを使用することを検討しています。これは機能しますが、ユーザーが独自のアプリケーションを管理できるようにする方法を探しています。管理者は、リバース プロキシと DNS を介してパブリック アクセスとプライベート アクセスを制御します。

しかし、dockerデーモンにコマンドを送信できるユーザーは何でも好きなことができるため、ユーザーにdockerインスタンスの起動/停止の権限を与えることはできません(ここそしてここ)。

では、どうすればユーザーが特定の Docker コンテナの起動/停止や構成を処理できるようになるのでしょうか?

現時点で唯一の解決策(見つかったここ)は、dockerがレジストリの変更を検出して、アップデートをダウンロードして再起動できるようにすることです。たとえば、監視塔)。

もう一つの選択肢はユーザー名前空間のサポートを待つルートコンテナユーザーがルートホストユーザーにアクセスできないようにしたいのですが、それで十分でしょうか?

編集: docker はセキュリティ的にはそれほど強力ではありませんが、私たちの場合:

  • ユーザーは認証された社内従業員に限定されます
  • ユーザーはdockerデーモンに直接アクセスできません(これが私の質問のポイントです)
  • これは、100の仮想ホストを持つ1インスタンスのApacheよりも優れたソリューションです。
  • 従来の LAMP の代わりに代替の Web フレームワーク / エキゾチックな構成 (node.js、meteor、ruby) に関する要求に対処する必要があり、コンテナーは開発者がアプリケーションをホスティング プラットフォームに転送するのに最適です。
  • これは私たちが行っている実験であり、近い将来に次のような解決策が実現することを期待しています。プロジェクトアトミックまた、ユーザー名前空間のサポートにより、より優れた保証がもたらされます。

答え1

顧客インターフェースに、所有しているコンテナを表示し、コンテナを再起動できるオプションを追加することもできます。Docker リモート API

ただし、これは安全なユーザー インターフェイスと適切なユーザー権限管理がある場合にのみ選択できるオプションです。

Docker リモート API は 10 月末の次のバージョン 1.9 で変更されることに注意してください。ロードマップ 1.9

関連情報