5

使用事例:

特定の顧客データのみを含む (データ保護のため) 顧客ごとに Docker コンテナーを起動するサーバー アプリケーションを作成したいと考えています。サービスは、openshift または openshift オリジンで実行する必要があります。

私が検索した場所:

openshift オリジンの最新ドキュメント

openshift オリジン m4 ドキュメント

私がすでに知っていること:

最初のコンテナーが特権コンテナーまたは Docker ソケットであり、ホストからのバイナリーがリンクされている場合、Docker コンテナー内から Docker コンテナーを起動できます。

[編集 31.10.15] のように:docker run -v /var/run/docker.sock:/var/run/docker.sock ...

私が知らないこと:

openshift で特権ドッカー コンテナーを起動したり、ドッカー コンテナー内から openshift API を使用して他のドッカー コンテナーを (特定のランタイム構成で) 起動したりすることはできますか? ところで:「マザー」コンテナはスケーラブルでなければなりません。

4

2 に答える 2

3

~jpetazzo/「 CI またはテスト環境に Docker-in-Docker を使用していますか? よく考えてください。 」を読んだ後、ネストされたコンテナーの代わりに兄弟コンテナーを使用することを検討します。
以下は CI に関する抜粋ですが、クライアントごとにコンテナを起動する OpenShift に適用できます (コンテナを起動する CI の代わりに)。

Docker-in-Docker が本当に必要ですか? それとも、この CI システム自体がコンテナー内にあるときに、CI システムから Docker を実行できるようにしたいだけですか (具体的には、ビルド、実行、場合によってはコンテナーとイメージをプッシュします)?

最も簡単な方法は、Docker ソケットを-vフラグでバインドマウントすることにより、CI コンテナーに公開することです。

簡単に言えば、CI コンテナー (Jenkins など) を起動するときに、Docker-in-Docker で何かをハッキングする代わりに、次のように起動します。

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

これで、このコンテナーは Docker ソケットにアクセスできるようになり、コンテナーを開始できるようになります。ただし、「子」コンテナーを開始する代わりに、「兄弟」コンテナーを開始します。

于 2015-10-31T13:05:11.150 に答える
0

可能です - OpenShift は、Docker およびソース ビルドを実行するビルド コンテナーを実行するために同じことを行います。コンテナー セキュリティ コンテキスト (ポッド定義内) で、特権を true に設定し、/var/run/docker.sock のボリューム マウントを定義します。

特権コンテナーを起動する権限が必要になることに注意してください (通常のユーザーは特権またはホスト マウントの設定を許可されていません)。これは、プロジェクトを「特権」セキュリティ コンテキスト制約 ( https:// docs.openshift.org/latest/admin_guide/manage_scc.html )。1.0.7 には、それを簡単にするポリシー コマンドがあります。oc policy add-scc-to-service-account

于 2015-11-03T01:34:59.050 に答える