連載
» 2015年11月20日 05時00分 公開

AWSのDocker管理サービス、Amazon EC2 Container Serviceの概要と使い方Docker運用管理製品/サービス大全(5)(2/4 ページ)

[長妻賢, 澤井健,株式会社NTTデータ]

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のJSON設定ファイル

 下記は、ECSでコンテナーを作成したときにCloudFormationで作成されたインスタンスの一覧です。

CouldFormationの作成インスタンス一覧
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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。