AWSのDocker管理サービス、Amazon EC2 Container Serviceの概要と使い方:Docker運用管理製品/サービス大全(5)(2/4 ページ)
数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、AWSが提供するECSの概要や主な機能、環境構築方法、オーケストレーション設定やスケーリングを行う手順など使い方などについて。
ECSを使ってコンテナーを作成する手順
まず、スタートページに行き、「Get Started」をクリックします。
「Step 1: Welcome to Amazon ECS」のページで「Custom」を選択します。「Amazon ECS Sample」とは、AWSが用意しているサンプルタスク定義を使い、「Custom」はユーザーのタスク定義を使うという意味です。
「Step 2: Create custom Task Definition」のページで、「Task Definition Name」を設定し、「Add Container Definition」をクリックします。なお、「Container Definitions」はコンテナー定義の指定で、「Volumes」はホストとコンテナーのディスクを共有するホスト側の設定です。
下記のようにタスクの定義を設定し「ADD」をクリックします。
- Task Difinition
- Container name:コンテナー名を指定
- Image:Dockerイメージの指定(URL指定なしの場合はDocker Hub({ユーザー名}/{リポジトリ名}:{バージョン})を利用する)
- Memory:コンテナーに割り当てるメモリをMB単位で指定。Dockerは最低4MBを割当てる
- CPU Units:コンテナーに割り当てるCPUユニット数を指定
- Essential:通常、runに設定されたコンテナーの実行が失敗するとTaskが失敗するが、ここを「false」に設定するとコンテナーの実行が失敗してもTaskの処理を継続する。1つのTask Definitionには最低でも1つEssentialが「true」なコンテナーが必要
- Port Mappings:コンテナー内のポートとホスト側のポートの結び付きを指定。DockerにEXPOSEとして渡される値を指定
- Mount points:ホストとコンテナーのディスクを共有する設定(コンテナー側の設定)
- Entry Point:DockerにENTRYPOINTとして渡される値を指定
- Command:Dockerにコマンドとして渡される値を指定
- Environment:Dockerコンテナーで使用する環境変数を指定。形式は、{ "name" : "環境変数", "value" : "値" }
- Links:コンテナー同士の接続を指定
- Volumes from:指定したコンテナーのボリュームを全てマウントする設定
- Volumes
- Volume:ホストとコンテナのディスク領域を共有する設定。ホスト側のパスを指定
タスクの定義を決定したら「Next Step」をクリックします。
「Step 3: Schedule Tasks」では、Serviceを作成し「Next Step」をクリックします。「Run Tasks Once 」はSchedulerによって1回は実行されるが、その後再実行は行われないコンテナーで、「Create a service」は常時実行するよう、Schedulerが監視するコンテナーです。いずれかを選択します。
「Desired number of Tasks」はTaskを実行を希望するContainer instance数です。「Create a service」を選んだ場合、Elastic Load Balancingの設定が行えます。
「Step 4: Configure Cluster」では、Clusterの設定を行い「Review&Launch」をクリックします。「Number of Instaces」はAuto Scalingに設定するContainer instance数です。「Security Ingress CIDR」はセキュリティを許可するCIDR(Classless Inter-Domain Routing)アドレスです。デフォルトは自分自身のみで、自動生成されるセキュリティグループで設定されます。
「IAM Role Information」では、「Create IAM Role」でロールを新規作成できます。ここでは、ECSのfull accessを許可するロール「ec2-ec2-role」を作成し設定しています。
「Step 5: Review」では設定内容を確認し、「Launch Instance&Run Service」をクリックします。
「AWS CloudFormation」(以下、CloudFormation)でVPNやEC2などが作成されることを確認します。
また、コンテナー作成後にブラウザーでアクセスし、正常に表示されることを確認します。
なお、「Step 3: Schedule Tasks」で設定した「Desired number of Tasks」は「Disired count」としてServiceの値に設定されます。
「Step 4: Configure Cluster」で設定した「Number of Instaces」は「Auto Scaling」に設定されます。
下記は、今回ECSでコンテナーを作成した際の設定ファイルです。
{ ""family"": ""HTTPContainer"", ""containerDefinitions"": [ { ""name"": ""HTTPCon"", ""image"": ""{ユーザー名}/docker-repo:latest"", ""cpu"": ""10"", ""memory"": ""512"", ""entryPoint"": [], ""environment"": [ { ""name"": ""Version"", ""value"": ""latest"" }, { ""name"": ""Name"", ""value"": ""HTTPCon"" } ], ""command"": [], ""portMappings"": [ { ""hostPort"": ""80"", ""containerPort"": ""80"" } ], ""volumesFrom"": [], ""links"": [], ""mountPoints"": [], ""essential"": ""true"" } ], ""volumes"": [] }
下記は、ECSでコンテナーを作成したときにCloudFormationで作成されたインスタンスの一覧です。
Logical ID | Physical ID | Type |
---|---|---|
InternetGateway | igw-47b84622 | AWS::EC2::InternetGateway |
Vpc | vpc-0fe33d6a | AWS::EC2::VPC |
ElbSecurityGroup | sg-e819888d | AWS::EC2::SecurityGroup |
PubSubnetAz2 | subnet-22379855 | AWS::EC2::Subnet |
AttachGateway | EC2Co-Attac-1NG7CWOTF0XZ7 | AWS::EC2::VPCGatewayAttachment |
PubSubnetAz1 | subnet-6c844435 | AWS::EC2::Subnet |
RouteViaIgw | rtb-9042e1f5 | AWS::EC2::RouteTable |
PublicRouteViaIgw | EC2Co-Publi-70O78UUHSBC2 | AWS::EC2::Route |
PubSubnet2RouteTableAssociation | rtbassoc-bbcb63de | AWS::EC2::SubnetRouteTableAssociation |
PubSubnet1RouteTableAssociation | rtbassoc-bacb63df | AWS::EC2::SubnetRouteTableAssociation |
EcsElasticLoadBalancer | EC2Contai-EcsElast-198KJGQ2I7790 | AWS::ElasticLoadBalancing::LoadBalancer |
EcsSecurityGroup | sg-f6198893 | AWS::EC2::SecurityGroup |
EcsInstanceLc | EC2ContainerService-default-a19f4397-c985-4df6-ba15-e0b8f68d38e9-EcsInstanceLc-XY0G9L02YZK2 | AWS::Auto Scaling::LaunchConfiguration |
EcsInstanceAsg | EC2ContainerService-default-a19f4397-c985-4df6-ba15-e0b8f68d38e9-EcsInstanceAsg-8UWCIE3HITI | AWS::Auto Scaling::Auto ScalingGroup |
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 所要時間わずか10分で「Docker」を体験しよう――Azureで始めるDocker入門
2014年から急速に注目度が増しているコンテナー型仮想化技術「Docker」。すでに多くのLinuxで利用可能な技術ですが、次期Windows Serverでもサポートされる予定です。Dockerとはどのようなものなのか、一度、実際に触って体験してみてはいかがでしょうか。 - Linux/OSSに不慣れでも大丈夫! WindowsでDockerを扱う際のポイント
本連載第31回は「Azureで始めるDocker入門」を掲載しました。掲載後、すぐに「Docker 1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。今回は、その記事でも紹介した「Docker Client for Windows」をフォローアップします。 - Docker代替のコンテナーランタイム「Rocket」をCoreOSが公開
CoreOSがDocker代替のシンプルなコンテナーランタイムを公開。Dockerの当初の目的であるシンプルなコンテナーを目指すプロトタイプだ。 - Docker、そしてCloud FoundryとPaaSの価値とは
Docker人気を踏まえたとき、Cloud Foundryはどのように位置付けられるのか。PaaSの最終的な価値とは何なのか。AWSとの競合とは。Cloud Foundryの責任者である米PivotalのJames Watters氏に聞いた。 - レッドハットが発表したOpenShift Enterprise 3は「Dockerを知らなくても使える」基盤
レッドハットが2015年7月22日に国内発表したPaaS製品「OpenShift Enterprise 3」の最大の狙いは、Dockerを知らなくてもアプリケーションの開発・運用ができるようにすることだという。ここでは、レッドハットの日本法人の説明に基づき、OpenShift Enterprise 3を紹介する。 - 米グーグルのDockerコンテナ管理サービスが一般提供開始
米グーグルがGoogle Cloud Platform上で提供しているDockerコンテナオーケストレーション/管理サービス、Google Container Engineが2015年8月26日、ベータ段階を終了、一般提供が開始された。毎週20億以上のコンテナを立ち上げているグーグルの経験に基づくサービスだとしている。