44282


DockerでECSを使ってWebサービスの環境構築を行おうと考えています。  
ただDockerの中のOSを何にすれば良いかわからず困っています。

と言いますのも、Dockerの一般的な構築はサービス毎にDockerを個別に立てるのが一般的と聞きました。  
そうなるとまずDockerをまとめるDockerがおり、その中に役割毎のDocker(サーバ、DB...)を立てるのかと想像しました。  
だとすると役割毎に立てるDockerのOSを一般的なLinuxOS(CentOSなど)にしてしまうと、OSの容量だけでもかなり増えてしまいそうです。  
その問題を解決するためにCoreOSというOSが存在することを知りました。

そうなると疑問点があります。  
このDockerをまとめるDockerもCoreOSにするべきなんでしょうか？  
また今まで自分が書いた想定は一般的なのでしょうか？

ご回答いただけると助かります。


CC BY-SA 4.0
2018-05-25T16:46:22.743
44269
2018-05-27T03:02:13.520
2018-05-25T16:57:57.223
15186
15186
question
docker
Dockerの構成とそれに伴うOSの選定に関する質問


おそらくですが、質問者様は、いわゆるマイクロサービスアーキテクチャを docker
で実装する話をしているのだと思います。さらには、あるフロントエンド用のサービス(html
のレンダリングなどは、ここでやる想定)があって、そのサービスがバックエンドサービスと通信を行い、ウェブアプリケーションとして動作させる形態を想像しているのだと思います。

またその際に、バックエンドの docker は、フロントエンドのサーバー (docker) の中で立ち上げることも想定しているのかなと思っています。

仮にそうだったとした場合、一つ重要な点は、
フロント用サービスと、バックエンドのサービスは、基本的に独立したサーバーとして運用する構成にするのが通常である、という点です。

docker でフロントとバックエンドのサーバーを分けた場合、それらは同じ階層の docker として運用し、一方(フロント) がもう一方(バックエンド)
に通信を行いに行く、という構成になると思います。

わかりやすいのは、 docker-compose にバックエンドとフロントエンド、それらをつなぐポート情報を記述するようなイメージでしょうか。

こういった構成をとった場合、フロントとバックエンドのベースイメージは、基本的になんでもいいはずです。重要なのは、コンテナの expose
しているポートに通信すると、正しく期待した動作をコンテナがしてくれることです。

さらに注釈を加えると、 docker の中で docker を使うのは、やめたほうがいいと思います。docker の unix socket
をコンテナの中に埋め込むような方法などで、コンテナの中からでも docker
を使えるように設定できなくはないですが、マウントの解決がやたら面倒になった記憶があります。


CC BY-SA 4.0
2018-05-27T03:02:13.520
44282
2018-05-27T03:02:13.520
754
44269
answer