私の会社では、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