EC2上のDockerコンテナーのプロセスを停止させるには、下記コマンドを使います。
docker stop {コンテナーのID}
kill {コンテナーのプロセスID)
両方ともコンテナーを停止した直後にコンテナーが再生成されます。
Dockerコンテナー内のログをBeanstalkで収集するには、Dockerrun.aws.jsonにLoggingオプションを追加します。
下記のDockerrun.aws.jsonをBeanstalkでアップロードします。
{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "ishiguroj/docker-repo", "Update": "true" }, "Ports": [ { "hostPort": 80, "ContainerPort": "80" } ], "Logging": "/var/log/httpd" }
コンテナーが起動したら80ポートに何度かアクセスを行います。
Beanstalkの「Logs」の「Request Logs」から「Last 100 Lines」を選択します。
出力されたログのDownloadボタンを押してログを表示させます。
ログの中の「/var/log/eb-docker/containers/eb-current-app/access_log」にコンテナーのhttpdのaccess.logが表示されます。先ほど何回かアクセスしたログが表示されます。
上記の手順でコンテナー内のログをBeanstalkで確認することが可能です。また、上記のログは、Amazon S3の下記のアドレスに15分間保存されます。
BeanstalkでカスタムのAMI(Amazon マシンイメージ)を使用する場合は、一度デフォルトで環境を作成し、その後にカスタムのAMIでEC2を作成し直す必要があります。
「Beanstalkを使ったDockerのクラスター環境を構築」に従いDockerの環境を作成します(参考)。
作成されたEC2インスタンスをAMI化し、新しいEC2インスタンスを作成します。
作成された新しいEC2インスタンスをカスタマイズし、カスタマイズされた内容をAMIで保存します。
保存されたAMIを作成したDocker環境に設定します。
環境のナビゲーションペインの「Configuration」をクリックします。次に、「Instances」の横にある「編集」をクリックします。「Custom AMI ID」ボックスの値に作成したAMIを設定します。「Apply」ボタンを押すと、EC2インスタンス、AutoScalingの設定が自動的に変更されます。
今回は、BeanstalkのDocker管理ツールとしての側面について解説しましたが、いかがでしたでしょうか。最後に、ECSとの機能の違いをまとめておきます。これらの違いを意識して、使い分けてみてはいかがでしょうか。
BeanstalkはECSと比べると下記の機能があります。
一方で、ECSと比べると下記の機能がありません。
次回も、Docker管理サービスを紹介しますので、お楽しみに。
NTTデータで基盤系技術者として各種開発に従事。運用管理製品Hinemosをクラウドに対応させるべく開発をしつつ、AWSにおける運用を議論するコミュニティ「OpsJAWS」の立ち上げに携わるなどしている。
富山県出身。NTTデータに入社後、PostgresForestやHinemosの開発、保守、導入支援に携わり、今はHinemosのクラウドへの普及展開を進めている。休日は仕事を離れ、宝塚観劇のため日比谷や兵庫に訪れるなど趣味を満喫している。
Software Design plusシリーズ『Hinemos 統合管理[実践]入門』(共著:技術評論社)
Copyright © ITmedia, Inc. All Rights Reserved.