official
好きです ECR (仮) @orih_y さん
- slide
- ECRの紹介
- ECRとは、フルマネージドDockerレジストリ
- デフォでHTTPS
- docker pull でdocket.hubと同じ様なやり方で取得可能。
- 価格、1レジストリ、30レポジトリ、200イメージ、Ntag、50GBを運用した場合、??たぶん安い。
- 2016-02-05現在、東京リージョンにはない。
お前のDockerイメージはまだ重い〜体脂肪一桁のDockerイメージを目指して〜株式会社サイバーエージェント @stormcat24 さん
- slide
- Dockerイメージの減量について
- 目安として1GBのDockerイメージをpullするのに約60秒かかる(DockerHubの場合、約75秒)
- アプリケーション内ではコンテナ1つの構成では成立しないので、60秒では厳しい(遅い)。
- イメージが大きいと、イメージのビルド時間、イメージのアップロード、ダウンロード時間が増える。
- 運用に及ぼす影響
- デプロイ時間
- AutoScalingで追加されたサービスインする時間が増える
- 軽ければ軽いほど価値がある
イメージを軽くする方法
- イメージのレイヤー数を減らす
- レイヤー自身もイメージなのでレイヤーを減らせばサイズも減る
- RUN命令をチェーンする。(シェル実行を&&で繋げる)
- 産業廃棄物(build時に生じた不要なツールやファイル)を適切に処理する
- yumやapt-getのゴミ、ビルドに使用したソース、git、成果物だけ残すことを意識する
- ボリュームマウントを活用する
- ホストに必要なディレクトリを配置し、コンテナにマウントする事でイメージを削減する。
- ホストに依存するため、ポータビリティは落ちる。
- DockerHub
- イメージのサイズを確認出来る。
- 必ずしも綺麗になってるわけではないので、サイズ確認が重要。
- メジャーどころはubuntuやdebianが多い
- Dockerfileのノウハウだけ頂いて、ベースイメージだけ変えるのも選択技
- scratch * 現存最小のDockerイメージ * shもlsもない * amazon/amazon-ecs-agent(9MB)のベース * 全部セルフサービス
- busybox
- 元組み込み系Linuxのデファクト
- シェルはash
- 扱いは難しい(中でビルド出来ない)
- AlpineLinux
- 2MB
- Busyboxベース
- APKというパッケージ管理ツールがあり、Bubyboxよりは扱いやすい
- alpine-java(50MB), alpine-node(15MB), ruby(10MB) ,go(50MB)と派生が増えてきた
- タイミング次第で置き換えたい。
- nginx 150MB -> 20MBくらいの容量削減。
- 80%くらいイメージ容量削減出来る。
- Web/APIのECSタスク4つで200-300MBくらい1分くらいでpull+run出来る。
- トレードオフ
- Dockerfileの職人芸化
- Alpineのレポジトリにあるパッケージのバージョンアップが遅い
-
ImageLayer.io
- Dockerイメージを可視化してくれるツール
- DockerHubと連携
- 太ってる箇所を一目でわかる
- GithubとDockerHubで公開されているので、独自レポジトリで使えるが、レジストリが固定化されているので、forkして変更すれば使える。
- アプリケーションを小さくする
- コンテナ時代ではサイズの小ささも問われる
- Docker芸人には各言語のビルドツール(Node:npm、Java/Scala:Marvenとか)の知識も問われる -> Docker有識者だけでは成立しない。
- ライブラリスコープの見直しの為のリファクタリング
- 静的ファイル、外部に出せそうなのは、ボリュームマウントへ
実践ECS-CLI(デモ) @pottavaさん
- slide
- サンプルアプリ
- ECSをコマンドラインから操作するツール
- EC2インスタンス操作を隠蔽して使える
- DockerComposeを使ってるかのようにECSを操作出来る
- Dockerを使ったローカルでの開発から本番環境へのデプロイまで
- 実際に開発してAWSにデプロイするには
- Dockerレジストリが必要 -> ECRでOK
- Dockerホストが必要 -> ECS-CLI/docker-machine
- オーケストレーション -> Consul, DNS
- ログ -> ??
- ECS-CLIを使うには
- 本番環境で使用するにはまだ未熟
- ELBとの連携が出来ない
- docker-composeが使えたら便利なのに・・・
CloudwatchEventを使ったECSのAutoScaling クラスメソッド株式会社 千葉 淳さん
- slide
- ECSはコンテナのAutoScalingは未対応なので、CloudwatchEventで無理やりAutoScalingさせた話
- CludwatchとSNSの違いは設定が楽なのと、APIを使用してリアルタイムにトリガー出来る
- 課題
* 動作が遅い(最大5分)
- コンテナ単位でのAutoScalingは出来ない(ECSクラスタ単位)。コンテナの状態把握が出来ないから。・・・Datadog使えば出来るのでは?