Skip to main content
この記事には、コンテナーとプロセスの両方を使用して PlayFab Multiplayer Servers 上に Linux ビルドを作成する方法の詳細が含まれています。

Linux コンテナー イメージの作成とデプロイ

このセクションでは、Linux コンテナー イメージの作成とデプロイに役立つ具体的な手順を説明します。 仮想マシン (VM) の作成 で説明されているように、サービスを使用する際、予算と需要に応じてグローバルにゲーム サーバーとして自動的に起動する VM を構成します。そのため、VM を明示的に作成するのではなく、代わりに VM がどのように作成されるかを決定するパラメーターを定義します。このプロセスをビルドのデプロイまたは作成と呼びます。 PlayFab Multiplayer Servers は Linux ベースおよび Windows ベースの両方のゲーム サーバーをデプロイできます。Linux コンテナー用のビルドがデプロイされる方法は、いくつかの重要な違いを除いて、Windows コンテナーと類似しています。詳細については、Windows と Linux コンテナー イメージの違い を参照してください。Linux コンテナーを管理するために PowerShell/API を使用したい場合は、API を使用した Linux コンテナー イメージの管理 を参照してください。 Linux ベースのゲーム サーバーを使用する場合、マネージド コンテナー イメージを使用する代わりに、コンテナー イメージを作成してコンテナー レジストリにアップロードする必要があります。コンテナーを簡単にアップロードできるように、アカウントには Azure コンテナー レジストリが付属しています。

必要な知識

Windows 開発デバイスのセットアップ

この手順は、Linux コンテナー イメージを作成するために Windows 開発デバイスを使用したい場合にのみ必要です。または、Docker がインストールされた Linux OS デバイス、VM、またはデュアル OS システムを使用できます。 Windows Subsystem for Linux (WSL) を使用すると、開発デバイスを使い慣れた Windows 環境で Linux コンテナー イメージを作成および管理できます。WSL を使用することで、従来の Linux 仮想マシンやデュアル ブートのセットアップのオーバーヘッドが不要になります。
  1. WSL 2 をインストール します。マシンを再起動し、WSL 2 を使用していることを確認してください。Linux カーネル更新パッケージもインストールする必要があります。
  2. WSL を使用する Linux ディストリビューションをインストール します。当社の VM は Ubuntu を使用していますが、コンテナー イメージ用に任意のディストリビューションを選択できます。Ubuntu 20.04 Long-Term Support (LTS) 以降のバージョンの使用を検討してください。
  3. WSL 2 で Docker Desktop for Windows をインストール します。直接のダウンロード リンクについては、Docker Desktop for Windows (外部) を参照してください。
WSL 2 のセットアップの確認
  • PowerShell を開く
  • wsl -l -v を実行して、docker-desktop と ubuntu の両方のアプリケーションが WSL 2 (バージョン 2) で実行されていることを確認します
WSL 用に Docker が正しくセットアップされていることを確認
  • WSL ターミナルを開く
  • docker version を実行して、Docker がインストールされており、使用されている OS が Linux であることを確認します
Linux C++ アプリケーションの開発とデバッグには、Visual Studio 2019 の WSL を使用してください。

PlayFab コンテナー レジストリのサインイン資格情報の取得

Azure コンテナー レジストリのアカウントは PlayFab アカウントに関連付けられています。そこにアップロードされたコンテナーにアクセスできるのはあなたのみです。この Azure コンテナー レジストリは無料です。
  • Game Manager で、ゲーム タイトルを選択し、次に Multiplayer > Servers を選択します。New build を選択してビルド作成ページを開きます。
  • 仮想マシン オペレーティング システムとして Linux を選択します。
  • サインイン資格情報 (名前、パスワード、customer5555555.azurecr.io) をメモしておきます。この情報は後で必要になります
PowerShell/API を使用したい場合は、GetContainerRegistryCredentials API を呼び出して、コンテナー レジストリ アドレス、ユーザー名、パスワードを取得します。

Linux コンテナー イメージの作成と Azure Container Registry へのプッシュ

以下の手順は、カスタム Linux コンテナー イメージを作成してプッシュするのに役立ちます。

ゲーム サーバー アプリケーションと GSDK の統合

Windows サーバーを使用するのと同様に、ゲーム サーバー コードを PlayFab Multiplayer Server SDK (GSDK) と統合する必要があります。GSDK 統合はコンテナー イメージの一部にできます。 手順については、ゲーム サーバー ビルドの作成 および PlayFab Game Server SDK (GSDK) とタイトルの統合 を参照してください。

Dockerfile の作成

Dockerfile は拡張子のないテキスト ファイルで、特定のコンテナー イメージをビルドするために必要なすべてのコマンドを含みます。
  1. メモ帳 または任意のエディターを開きます
  2. コンテナーの実行とビルドに必要な特定のコマンドを追加します。このファイルの例については、Wrapper サンプル で提供されている DockerFile を参照してください。このファイルの作成方法の詳細については、Dockerfile 形式 (外部) および Dockerfile 作成時のベスト プラクティス (外部) を参照してください
  3. ファイルを Dockerfile として保存します。理想的には空のフォルダー/ディレクトリに保存してください。コンテナー イメージのビルドに必要な他のファイルもこのフォルダーに追加する必要があります。
メモ帳 を使用する場合の保存手順:
  • ファイル> 名前を付けて保存… を選択して保存オプションを開きます
  • ファイルを保存したいフォルダーに移動します
  • ファイル名: の下で、クォート付きで “Dockerfile” を使用します。
  • ファイルの種類: には すべてのファイル を選択します
  • UTF-8 エンコーディングを選択します
  • 保存 を選択します

Linux コンテナー イメージのビルドとアップロード

  1. Docker がインストールされた Linux ターミナルを開きます。
  2. 先ほど取得したサインイン資格情報を使用して、次の Docker コマンドを実行します。次に、画面の指示に従ってユーザー名とパスワードを入力します。
docker sign in は、Game Manager に示されているように Azure コンテナー レジストリにログインします。
  1. コンテナー イメージのビルド
次のコマンドを実行して、現在のディレクトリの Dockerfile を使用してコンテナー イメージをビルドします。docker build コマンドの最後に ”.” があります。 -t フラグは、新しいコンテナー イメージの name:tag 情報を指定します。ビルドが成功した場合、name と tag が使用されます。ビルド エラーがある場合、次の手順に進む前にそれらを修正する必要があります。 以下の例では、リポジトリ名は customer5555555.azurecr.io/pvp_gameserver で、タグは v1 です。詳細については、docker build コマンド リファレンス (外部リンク)Dockerfile のビルド (外部リンク) を参照してください。 WSL を使用している場合、Windows C: ドライブは /mnt/c にマウントされます。
  • 次に cd /mnt/c/path/to/your/Dockerfile を実行して、Dockerfile があるパスに切り替えます。 詳細については、C ドライブへのアクセス を参照してください。
Linux を使用する場合、pwd を実行して現在いるディレクトリを確認できます。
  1. コンテナー イメージのアップロード
イメージを PlayFab コンテナー レジストリにプッシュするコマンドを実行します。アップロードするコンテナー イメージの意味のある役立つ name:tag の組み合わせを選択してください。コンテナーを PlayFab が運用するレジストリにアップロードするには、docker push または他のコンテナー レジストリ クライアントを使用してください。

コンテナーがアップロードされたことを確認する

コンテナーがアップロードされた後、Game Manager の New Build ページに戻り、Refresh Images を選択します。リスト内にイメージが表示され、選択できるようになります。または、ListContainerImages API 呼び出しを使用して、アップロードされたコンテナー イメージを一覧表示できます。 これでサーバーをデプロイする準備ができました。手順については、PlayFab ポータル—Game Manager および PowerShell/API の使用 を参照してください。

Windows と Linux コンテナー イメージの違い

多くの開発者にとって、Windows マネージド コンテナーの使用は望ましいシンプルなデフォルトの選択肢です。ただし、仮想マシン上にデプロイされる Linux コンテナー イメージには、より安い時間単位料金が適用されます。
Windows または Linux コンテナー イメージのどちらを使用しているかにかかわらず、ゲーム サーバーを完全にカスタマイズできます。Windows サーバーを使用する場合、アセットをアップロードすることでマネージド コンテナー イメージをカスタマイズします。
以下の表は、それらを作成および使用する際のいくつかの違いを示しています。

API を使用した Linux コンテナー イメージの管理

API を使用して Linux コンテナー イメージを管理できます。ビルド ライフサイクルの残りの部分 (使用量の確認、リージョンと standingBy 構成の更新、削除) は、Game Manager を使用して管理します。
  • GetContainerRegistryCredentials: コンテナー レジストリのアドレス、ユーザー名、パスワードを取得します
  • ListContainerImagesListContainerImageTags: 新しいイメージとタグがリストされていることを確認します (イメージがシステムに完全に登録されるまで数分かかることがあります)
  • CreateBuildWithCustomContainer: カスタム コンテナーでビルドを作成します。先ほどアップロードしたタグ付きイメージを指定します。リクエストで次のプロパティが設定されていることを確認します:
    • ContainerImageReference - 先ほどアップロードしたイメージ名とタグ。これらの値は ListContainerImages および ListContainerImageTags で表示されます。
    • ContainerFlavor - “CustomLinux”
    • ContainerRunCommand (オプション) - コンテナーにデフォルトのコマンドがない場合、このプロパティを使用して実行するコマンドと引数を提供します。

Linux プロセスベース サーバー用のアセットのパッケージ化

Linux を プロセス モード で使用する場合 (コンテナー モードではなく)、コンテナー イメージではなくアセット アーカイブとしてゲーム サーバーをアップロードします。このセクションでは、重要なパッケージ化要件について説明します。

サポートされているアーカイブ形式

アセットは .tar.gz または .tar ファイルとしてアップロードする必要があります。これにより、抽出時に Unix ファイル権限 (実行ビットなど) を維持できます。
.zip ファイルは Linux で Unix ファイル権限を維持しません。 Linux ゲーム サーバー実行可能ファイルを .zip アーカイブでアップロードすると、実行権限が失われ、「Permission denied」エラーで起動に失敗します。この問題を回避するには、代わりに .tar.gz を使用するか、実行可能ファイルを起動する前にそれに chmod +x を実行するシェル スクリプトを Start コマンドに設定してください。

Tar.gz および tar アーカイブの構造要件

.tar または .tar.gz アーカイブを抽出する際、PlayFab Multiplayer Servers はアーカイブから最初のディレクトリ レベルを取り除きます (tar --strip-components=1 と同等)。アーカイブには、すべてのゲーム ファイルを含む単一のトップレベル ラッパー ディレクトリを 必ず 含める必要があります。 適切な構造 — ファイルはトップレベル ディレクトリ内:
アーカイブを次のように作成します:
ファイルがラッパー ディレクトリなしでアーカイブのルートにある場合、抽出時に サイレントにスキップされます。実行可能ファイルがディスクに書き込まれないため、ゲーム サーバーは「No such file or directory」エラーで失敗します。

Start コマンドの設定

プロセスベース サーバーの場合、Start コマンドは 抽出後のルート アセット フォルダーからの相対パス (つまり、トップレベル ディレクトリが取り除かれた後、ファイルが配置されるルートに対する相対パス) にする必要があります。 たとえば、アーカイブに MyGameServer/MyGame.x86_64 が含まれている場合、抽出後、ファイルはアセット フォルダーのルートにあります。Start コマンドを次のように設定します:
実行可能ファイルがサブフォルダー内にある場合 (たとえば、MyGameServer/bin/MyGame.x86_64)、Start コマンドを次のように設定します:

API を使用した Linux プロセスベース ビルドの管理

API を使用して Linux プロセスベース ビルドを管理できます。ビルド ライフサイクルの残りの部分 (使用量の確認、リージョンと standingBy 構成の更新、削除) は、Game Manager を使用して管理します。
  • CreateBuildWithProcessBasedServer: ゲーム サーバーがプロセスとして実行されるビルドを作成します。リクエストで次のプロパティが設定されていることを確認します:
    • OsPlatform - “Linux”
    • GameAssetReferences - ゲーム アセットのリスト (.tar.gz または .tar ファイルとしてアップロード)。各アセットには、アップロードされたアセット名と一致する FileName が必要です。
    • StartMultiplayerServerCommand - ゲーム サーバーの開始時に実行するコマンド。パスは抽出後のルート アセット フォルダーからの相対パスにする必要があります (たとえば、MyGame.x86_64 -server)。
    • Ports - ビルドにマップするポート。
    • MultiplayerServerCountPerVm - 単一の VM 上でホストするゲーム サーバー インスタンスの数。
    • RegionConfigurations - スタンバイと最大サーバー数を持つ、デプロイ先のリージョン。

関連項目

最終更新日 2026年8月25日