よく知られているように Docker ではコンテナ自体は使い捨てで、アプリケーションが保持すべきデータはコンテナの外に格納する必要があります。
多くのアプリケーションが RDBMS を使用しています。 RDBMS の運用は実際のところかなり厄介ですが、まあ Amazon RDS を使っちゃいましょう。それが一番楽です。 EC2 じゃないところにサーバー置いてて RDS との通信量課金を払いたくないという場合は適宜頑張ってください。
現代の多くのアプリケーションが Redis や memcached を使っています。これも Amazon Web Services に ElastiCache があるので EC2 にサーバー置いてる場合はこれを使います。置いてない場合は適宜頑張ります。
ここまでのことは特に何ということもないのですが、ここからが問題です。アプリケーションによっては RDBMS や Redis などに格納出来ないようなタイプのデータを扱うことが多々あります。
典型的な例としては画像データや音楽データやビデオなどのマルチメディアデータが挙げられるでしょう。
ここまでの話の流れからするとさあ Amazon S3 だというふうに行きたいところなのですがそうは問屋が卸しません。
Amazon S3 (というか AWS)は転送量ベースでの課金が非常に高額なのです。これが HTML の配信だとか、 RDS との通信とかだとさほど問題にならないのですが、画像となると一瞬にして問題になります。僕が運営している Rolling Icon という Twitter のアイコンを管理するツールの場合でも一瞬にして月 1 万円越えしました。
1 万円は払ってらんねーわということでさくらの VPS を使いましょう。さくらの VPS はストレージが 200GB とかあって安定していて転送量ベースでの課金の無いサーバーを月 1500 円とかで借りることができます。
転送量課金がないのをいいことにさくらをコンテンツ配信に使うのどうなのよ、、、という気がしてこなくもないですが、公式ブログにそういう蛮行をしている事例が掲載されているので気にしない方針でいきましょう。
同様の要件に対して GMO クラウドを使ったこともあるのですが、 GMO クラウドはサーバーリブートしたら戻ってこなくてサポート対応になって翌朝まで待ってね♪みたいになったことがもう 3 回ぐらいあるのでもう一生使いたくありません。さくらはそういうことない。
Docker を使いまくっている日本人はだいたいさくらインターネットで大量のコンテンツを配信する蛮行をしています(俺調べ)。
日本国外にも高速にコンテンツ配信したい場合は AWS の転送量課金地獄を歩んでください。
こういうのを頑張っておくと、アプリケーションとそのデータがきちんと疎結合になって、金が無いからコンテナを自宅に移そうだとか、自宅のリソースが逼迫してきたから一部コンテナは一時的に EC2 に置こうだとかそういうのが一瞬で出来るようになって便利。