質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1591閲覧

AWSのECSを利用する際に、2つ以上のコンテナを1つのEC2上で稼働させたい。

cyber

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/03/05 01:47

実現したいこと

AWSのECSを利用する際に、2つ以上のコンテナを1つのEC2上で稼働させたい。

前提

機械学習のpythonプログラムをコンテナ化し、EC2のg3で動かそうとしています。
利用料金が高いので、複数作った別々の内容のコンテナを一つのEC2で動かそうとしていました。普通にEC2を1台借りて、dockerをインストールし、そこに複数コンテナを稼働させようとしていたのですが、コンテナのマネジメントサービスであるECSがあると知りました。ECSのほうが、運用が楽かなと思い、複数コンテナを一つのEC2サーバ上で動かそうとしたのですが、ECS作成画面で既存のEC2サーバを設定する項目が見つからず、進まなくなってしまいました。
GPUプログラミングであるCUDAが使えるサーバでしか利用したい機械学習プログラムが動かないため、
fargateで動かすなども考えてみましたが、CUDAを利用できるのかもわかりませんでした。
やりたいことが実現できるなら他の方法(fargateを利用する、やEKSを利用するなど)でも構いませんのでご教授いただきたいです。

試したこと

・ECSの設定画面の確認
→インフラストラクチャのEC2の新規作成しかできず、既存のEC2への追加ができない。
・googleでこの質問内容の検索
→日本語の記事で回答になりえそうなものがなかったです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あえて既存のインスタンスを使う理由もないので、EC2を使いたいならクラスターでAutoScalingグループを作ってそこで動かしてください。
ECS on EC2では専用のAMIを使用するので、仮に使えたとしても要件が合わない可能性が高いです。

もしかしたらAutoScaling Groupを作成した後にそのAutoScaling Groupに手動でEC2インスタンスを使用すればできなくもないかもしれませんが、やるメリットがなにもないので仮にできたとしてもおすすめしません。

ECSでGPUが必要な処理をする場合については既にドキュメントを記載いただいているので割愛します。
EC2を使うならスポットインスタンスを、ECSを使うならFargate Spotをうまく活用すると料金が抑えられるのでおすすめです。

投稿2023/03/06 05:37

yu_1985

総合スコア7393

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こちら↓のページにそのものズバリな設定が記載されているようです。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-gpu.html#ecs-gpu-specifying

task definition の requiresCompatibilities を EC2 にして containerDefinitions に複数のオブジェクトを格納すればOKです。例としては以下のような感じです。下記以外の設定は環境次第なので検討してみてくださいませ。

json

1"requiresCompatibilities": [ 2 "EC2" 3], 4"containerDefinitions": [ 5 { 6 "name": "container1", 7 "image": "xxx.dkr.ecr.ap-northeast-1.amazonaws.com/xxxx:xxx", 8 }, 9 { 10 "name": "container2", 11 "image": "xxx.dkr.ecr.ap-northeast-1.amazonaws.com/yyyy:yyy", 12 } 13]

なお、ご質問に記載されている「複数作った別々の内容のコンテナを一つのEC2で動かそうとしていました。普通にEC2を1台借りて、dockerをインストールし、そこに複数コンテナを稼働させようとしていた」という方向性は、これはこれでいい方向性にもみえます。実現する手段は様々あるかと思いますが、構築するシステムの要件次第かな〜とおもいました。(この回答は ECS on EC2 ベースで回答しました。)

投稿2023/03/05 08:58

yagihiro

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問