コンテンツにスキップ

設計

ここではDocker使用時にどのようなアプローチでコンテナを設計すればよいかについて紹介します。

1コンテナ = 1プロセス

Dockerは1つのプロセスをフォアグラウンドで走らせるための技術です。
基本的に「1コンテナ = 1プロセス」の粒度で設計しましょう。

しかし、基本的にほとんどのケースが「1コンテナ = 1プロセス」で設計できますが、全てのケースが一概に1コンテナ = 1プロセスにできるわけじゃないのでその点は見極めましょう。その場合の粒度は「1コンテナにつき1つの関心事」が良いでしょう。

永続的なデータはマネージドサービスに任せる

永続的なステータスが必要なコンテナを作成するケースは往々にして存在します。
データベースのようなデータストアはどこのサービスでも用いるはずです。
そういったステータスを持って依存が発生してしまうとDockerの性能に影響を及ぼします。
Dockerはステートを持たないよう設計しましょう。

12factor app

12factor

Heroku社が提唱するモダンなサービスを実現するための12の方法論です。
コンテナの設計がわからないうちはこの12の方法論にのっとり設計を行うと綺麗な環境を構築することができます。

The Twelve-Factor App (日本語訳)