第22回 Dockerで3Dゲームを動かす――稼働編古賀政純の「攻めのITのためのDocker塾」(1/3 ページ)

ここまでDocker環境で3Dゲームを稼働させるための準備や方法などをみてきました。それでは実際に自動車や飛行機、鉄道のシミュレータを稼働させてみます。

» 2016年05月18日 08時00分 公開

(※前々回の「準備編」はこちら前回の「構築編」はこちら

ゲームアプリ用のDockerfileを用意する

 さて、いよいよゲームアプリごとにDockerfileを用意してDockerイメージのビルドし、コンテナを実行します。そもそも、ゲームアプリを稼働させるDockerコンテナのOSの種類(OSテンプレート)は、何を使えばよいのでしょうか。「コンテナのOSは、使い慣れたCentOSでいいのでは?」と思われるかもしれません。CentOSは、サーバ向けのOSとして実績も豊富で、サーバ用途のアプリも数多く存在します。

 しかし、ゲームなどのデスクトップ用途のアプリは、CentOSよりもUbuntuのほうが充実しています。CentOSの実験工房の役割を果たしているFedoraプロジェクトや、CentOSとFedora対応のサードパーティのリポジトリでは、ゲームアプリなどをできるだけRPMパッケージで提供しようという試みが行われていますが、ゲームアプリに限って言えば、CentOSやFedoraよりもUbuntuが圧倒的に充実しています。そこで今回、ホストOSはCentOS 7.xですが、Dockerコンテナに使うOSテンプレートはUbuntuを採用することにします。

ドライブシミュレータ「Vdrift」用のDockerfileを用意する

 まずは、ドライブシミュレータとして有名な「Vdrift」のためのDockerfileを用意します。


# mkdir /root/vdrift_ubuntu
# cd /root/vdrift_ubuntu
# vi Dockerfile
FROM            ubuntu:15.10 ←(1)
MAINTAINER      Masazumi Koga
ENV             container docker
RUN             apt-get update ←(2)
RUN             apt-get install -y wget sudo apt-utils lsb-release ←(3)
RUN             wget -c archive.getdeb.net/install_deb/playdeb_0.3-1~getdeb1_all.deb ←(4)
RUN             dpkg -i playdeb_0.3-1~getdeb1_all.deb ←(5)
RUN             apt-get update && apt-get upgrade -y ←(6)
RUN             apt-get install -y vdrift ←(7)

 UbuntuのOSテンプレートに対応したDockerfileですので、Red Hat系のディストリビューションしか触ったことがない方は、すこし戸惑うかもしれません。Dockerfileの中身について、以下に解説しますので、ご安心ください。

(1)について:

 FROM行で、Ubuntuのバージョン15.10のOSテンプレートを入手します。CentOSのOSテンプレートは、今回使いません。

(2)について:

 最初のRUN行では、「apt-get update」と呼ばれるコマンドが呼び出されています。これは、Ubuntuにおいて、更新すべきパッケージがあるかどうかをチェックするために必要です。もちろん、インターネットにアクセスできる環境が必要です。

(3)について:

 wget、sudo、apt-utils、lsb-releaseパッケージを入手、インストールします。

(4)について:

 wgetコマンドにより、playdebパッケージを入手しています。このplaydebパッケージは、Ubuntuにおける様々なゲームを配布している「PlayDeb.net」と呼ばれるゲームアプリを取り扱っているサードパーティのリポジトリです。この「PlayDeb.net」のリポジトリを追加することにより、Ubuntu対応のドライブシミュレータ「Vdrift」を入手できるようになります。

(5)について:

 「PlayDeb.net」のリポジトリを追加します。

(6)について:

 追加した「PlayDeb.net」のリポジトリを含めてパッケージの更新状況をチェックし、パッケージを最新にアップデートしておきます。

(7)について:

 「PlayDeb.net」で配布されているドライブシミュレータの「Vdrift」を入手、インストールします。

 以上で、Dockerfileが用意できました。ホストOSであるCentOS 7.x上で「Vdrift」のDockerイメージをビルドします。今回、Dockerイメージ名は「ubuntu:vdrift01」としました。


# pwd
/root/vdrift_ubuntu
 
# docker build -f ./Dockerfile -t ubuntu:vdrift01 --no-cache=true .

 いよいよ、ホストOS上でドライブシミュレータの「Vdrift」のDockerコンテナを起動します。もちろん、ホストOSでは、X Window Systemを使ったGUIのデスクトップ環境がディスプレイ上に表示されている必要があります。


# docker run \
-it \
--rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.vdrift:$HOME/.vdrift \
-v /var/lib/dbus:/var/lib/dbus \
-v /var/run/dbus:/var/run/dbus \
-v /etc/machine-id:/etc/machine-id \
--device=/dev/dri:/dev/dri \
--device=/dev/snd:/dev/snd \
--device=/dev/input:/dev/input \
ubuntu:vdrift01 /usr/games/vdrift -multithread

 すると、ホストOSのデスクトップ画面上に「Vdrift」のウィンドウが表示され、ゲームがプレイできるはずです。以下は、筆者がDockerコンテナで稼働する「Vdrift」をプレイしている様子の画面です。

Docker Dockerコンテナで稼働するドライブシミュレータ「Vdrift」で、1988年のモナコ・グランプリのコースを走行する様子。Vdriftには人工知能が組み込まれており、競争相手の車は自動運転が行われる
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ