ここまでDocker環境で3Dゲームを稼働させるための準備や方法などをみてきました。それでは実際に自動車や飛行機、鉄道のシミュレータを稼働させてみます。
さて、いよいよゲームアプリごとに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を用意します。
# 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」をプレイしている様子の画面です。
Copyright © ITmedia, Inc. All Rights Reserved.