すべてのプロダクト
Search
ドキュメントセンター

:はじめに

最終更新日:Dec 28, 2024

Batch Computeでは、イメージに直接ソフトウェアをインストールできるだけでなく、Dockerイメージへのアプリケーションのデプロイもサポートしています。Dockerイメージを作成し、レジストリツールを使用してAlibaba Cloud OSSにアップロードできます。その後、このイメージでジョブのタスクを実行できます。

1. Dockerのサポート

AutoClusterモデルを例として、一般的なVMとDockerコンテナのサポートの違いを説明します。

  • 一般的なVMを使用する場合:送信する各ジョブは複数のタスクを持つことができ、それぞれにイメージ(LinuxまたはWindows)が指定されています。

    タスクを実行すると、システムは指定されたイメージに基づいて対応するVMを起動します。

    タスクはこのVM上で実行されます。タスクが完了すると、システムはタスクの実行結果を指定された永続ストレージにアップロードし、VMを破棄してから、次のタスクを実行します。

  • Dockerを使用する場合:各タスクにDockerイメージを指定できます。

    タスクを実行すると、システムはDockerをサポートするシステムイメージ(Ubuntuなど)を実行するVMを起動します。

    次に、システムは指定したDockerイメージをダウンロードし、VMで起動します。タスクはDockerコンテナ内で実行されます。

    タスクが完了すると、システムはタスクの実行結果を指定された永続ストレージにアップロードし、VMを破棄してから、次のタスクを実行します。

現在、1つのVMは1つのDockerイメージしか実行できません。

# VMを使用する場合:
---
  |-- job
       |-- task
             |-- VM (WindowsおよびLinuxイメージをサポートする指定されたVM)
                  |-- program (プログラム)

# Dockerコンテナを使用する場合:
---
  |-- job
       |-- task
             |-- VM (DockerをサポートするUbuntuオペレーティングシステム)
                 |-- Docker-Container (Dockerコンテナに指定されたイメージ)
                      |-- program (プログラム)

2. Dockerを使用する場合と使用しない場合のシナリオ

-

Dockerを使用しない

Dockerを使用する

イメージの使用

ECSイメージIDを指定する

Dockerコンテナ(公式WebサイトでリリースされたUbuntu)をサポートするECSイメージのIDを指定し、カスタムDockerイメージを指定する。

プログラム実行プラットフォーム

WindowsとLinux

Linux

ローカルデバッグ

サポートされていない

サポートされている。ローカルで作成されたDockerイメージを使用する。

3. Dockerのインストール

3.1. Docker公式からのダウンロード

ツールボックスをインストールすると、デスクトップに2つのショートカットアイコンが表示されます。

説明

Kitematic:DockerコンテナGUIの管理に使用します。Docker Quickstart Terminal:Dockerコマンドラインウィンドウをすばやく起動するために使用します。

注: Docker 1.10以降のバージョンをインストールしてください。以前のDockerバージョンでは互換性の問題が発生する可能性があります。

3.2. ブースターの設定

ブースターは、中国で公式のDockerイメージをより迅速に取得するのに役立ちます:Alibaba Cloud Container Service開発プラットフォーム

4. Dockerイメージの作成

この例では、Pythonを含むUbuntuイメージを作成する方法を説明します。イメージ名はmyubuntuです。

次の構造でdockerUbuntuディレクトリを作成します。

dockerUbuntu
  |-- Dockerfile

Dockerfileの内容は次のとおりです。

FROM ubuntu:14.04

# your_nameを自分の名前に、your_emailをメールアドレスに置き換えます。
MAINTAINER your_name <your_email>

# ソースを更新します。
RUN apt-get update

# キャッシュをクリアします。
RUN apt-get autoclean

# Pythonをインストールします。
RUN apt-get install -y python

# システム起動後に次のコマンドを実行します。
CMD ["/bin/bash"]

次のコマンドを実行してイメージをビルドします。

cd dockerUbuntu              # dockerUbuntuディレクトリに移動します。
docker build -t myubuntu ./ # myubuntuという名前のイメージをビルドします。
  • 注:Ubuntuでは、デフォルトではdockerコマンドはsudoユーザーのみが実行できます。MacまたはWindowsオペレーティングシステムでは、Docker Quickstart Terminalを使用してコマンドラインウィンドウを起動し、ウィンドウでdockerコマンドを実行します。

イメージをビルドした後、次のコマンドを実行してイメージを表示します。

docker images

出力情報は次のようになります:

説明

Dockerfileを使用するだけでなく、より直感的な方法でDockerイメージを作成することもできます。

5. DockerイメージをOSSにアップロードする

Batch ComputeのDockerサービスを使用するには、作成したDockerイメージmyubuntuをOSSにアップロードします。システムはOSSからイメージをダウンロードして、タスクプログラムを実行します。

5.4. OSS Docker Registry 2のインストール

DockerをOSSの次のディレクトリに保存するとします。

oss://your-bucket/dockers/

Docker Registry 2の公式イメージを使用してプライベートイメージリポジトリを作成し、AccessKey ID、AccessKey Secret、リージョン、バケットなどのOSS情報を設定します。

インストール手順は次のとおりです。

現在のディレクトリにconfig.ymlファイルを作成します。

version: 0.1
log:
  level: debug
storage:
  oss:
    accesskeyid: your_access_key_id
    accesskeysecret: your_access_key_secret
    region: oss-cn-shenzhen
    bucket: your-bucket
    rootdirectory: dockers
    secure: false
    internal: false
http:
  addr: 0.0.0.0:5000

次の変数を置き換えます。

パラメータ

説明

your_access_key_id

AccessKey ID

your_access_key_secret

AccessKeyシークレット

your-bucket

バケット

oss-cn-shenzhen

バケットが属するリージョン

OSS設定の詳細については、Docker公式ドキュメントを参照してください。

次のコマンドを実行して、OSS Docker Registry 2をインストールします。

docker pull registry:2
docker run -v `pwd`/config.yml:/etc/docker/registry/config.yml -p 5000:5000 --name registry -d registry:2
  • 注: この例では、oss-cn-shenzhenは中国南部1(深圳)リージョンのOSSを表します。後で送信されたジョブは、このリージョンでのみ正常に動作します。

インストールが完了したら、次のコマンドを実行して結果を確認します。

docker ps       # 実行中のコンテナを確認します。

インストールが成功すると、registry:2が表示されます。

5.2. 次のコマンドを実行して、イメージをOSSにアップロードします。

docker tag myubuntu localhost:5000/myubuntu
docker push localhost:5000/myubuntu
説明

注:イメージ名のプレフィックスはlocalhost:5000/である必要があります。他のプレフィックスを使用すると、イメージをアップロードできません。プレフィックスのポート5000は、手順(1)の-p 5000:5000(コロン前の数字)で指定されます。作成したイメージの実際の名前はlocalhost:5000/myubuntuであり、myubuntuではありません。

イメージが正常にアップロードされたことを確認するには、OSSコンソールにログインし、次のディレクトリがあるかどうかを確認します:oss://your-bucket/dockers/docker/registry/v2/repositories/myubuntu/。

6. 注意

  • 実行中のDockerコンテナでは、ユーザー名はrootで、パス環境変数のデフォルト値は/sbin:/usr/sbin:/bin:/usr/binであり、/usr/local/binではありません。

  • PWD環境変数を設定しない場合、その値は「/batchcompute/workdir」です。すべてのプログラムパッケージは/batchcompute/workdirに解凍されます。

  • Dockerレジストリは起動後停止しません。したがって、クラスタIDを指定してジョブを送信する場合は、同じクラスタに送信されるすべてのジョブでBATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATHの値が同じであることを確認してください。

  • InputMappingとOutputMappingを同じディレクトリにアタッチすることはできません。

  • Batch Computeは-privileged=falseモードを使用してDockerコンテナを起動するため、Dockerコンテナ内で別のDockerコンテナを起動することはできません。