LoginSignup
71
62

More than 5 years have passed since last update.

AWS で Docker アプリをデプロイ・運用する

Posted at

始まりました。Docker Advent Calendar 2016 1 日目です。

メトリクス収集まとめを書くつもりでしたが、re:Invent 参加中ということもありやっぱり AWS ネタで。新サービス・機能について書きたいですが、今のところ発表がないので既存サービス内で。
(以下すべて、いちユーザとしての感想です)

デプロイ

パターン

AWS のマネージドを中心に CI / CD パイプラインを組むなら

  • ECS
  • ElasticBeanstalk
  • CodeDeploy
  • Docker for AWS

を用途に応じて使い分けられます。

ECS

用途

自分でクラスタを管理したい / しなければならないといった特別な理由がなければ、ECS がオススメです。最近 Datadog も ECS の本番利用が増加していることを記事1にしています。

メリット

構成例

ecs-arch.png

継続的デプロイ例

deploy-with-ecs

ElasticBeanstalk(EB)

用途

もともと EB を使っていて慣れている、または EB のデプロイ戦略を利用したいとき。
コンテナだけでなく RDS / ELB / AutoScaling などのプロビジョニング(初期設定など)も AWS に任せてしまいたいとき。

メリット

継続的デプロイ例

deploy-with-eb.png

CodeDeploy

用途

Docker Compose を使いたい、Swarm モードで動かしたい、nvidia-docker を挟みたいなど、AWS 外のフレームワークでコンテナを起動したいとき。
コンテナの起動前後で特定のスクリプトを流したり、特定の挙動をもってデプロイの成否を判定したいとき。

メリット

  • docker-compose や Swarm モードなアプリがデプロイできる
  • Swarm モードなら 1 台でも無停止アップデートが簡単
  • Docker レジストリが必須ではない
    • DockerHub や ECR が使えなくても大丈夫
    • S3 を経由した docker save / load
      (暗号化やライフサイクルポリシーなど各種メリットを享受できる)
    • Dockerfile でその場でビルドでももちろん OK
  • デプロイ前後にフックスクリプトが使える

継続的デプロイ例

(上のスクリプトと違って、S3 を経由する絵ですが)

deploy-with-cd.png

Docker for AWS

パブリックベータになりましたね!
ちょっと古いバージョンですが中身はこんな感じ

用途

Swarm モードを、Docker 社の管理するフレームワークで稼働させたいとき。IAM や ELB など AWS の便利なマネージドサービスは使いつつも、クラスタ管理は自前で行いたいとき。

メリット

  • Docker の新しい機能群が使える可能性が常に最も高い
  • 例えば v1.13 リリース予定の prune 機能がすでに有効化済み
  • インターナルサービスディスカバリに Docker の Ingress Load Balancing が使える
  • AutoScaling や ELB、DynamoDB、SQS による運用負荷の軽減
  • IAM やネットワークがセキュア側にプリセットされた安心感

Docker イメージの共有

ECR

用途

IAM やポリシーにより適切に権限管理することのできる Docker レジストリの管理を AWS を任せたいとき。

メリット

  • コマンド 1 行で簡単にリポジトリを作れる / 削除できる
  • AWS に管理を任せることで、可用性が高くスケーラブルなインフラに
  • IAM や独自のポリシー機能でアクセスを厳密に制御できる
  • オンプレミスなど AWS の外からも使うことができる
  • 同リージョン内の ECR と EC2 間データ転送量は無料

Tips

自前管理 Docker レジストリ

用途

公式に公開されているレジストリを自らの手で運用したいとき。アクセス管理を IAM 以外で行ったり、データの冗長化などを独自の方法で行いたいとき。

メリット

  • S3 や CloudFront を使うことで各サービスのメリットが得られる
  • 独自のホスト名を割り当てることができる
  • Docker のより新しい機能を早めに使うことができる(かもしれない)

 

以上です。

明日は @netmarkjp さんの「Dockerドキュメント日本語化に参加しよう!」です :)

 

71
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
62