次に疑問2ですが、これは連載第17回、18回、19回でご紹介したUSB接続のWebカメラと同様だと思われるかもしれません。しかし今回の場合は、Webカメラではなく、ゲームコントローラー(ゲームパッド)ですので、指定するデバイス名がWebカメラと異なります。一般的に、ホストOSがCentOS 7.xの場合、そのホストOSが稼働する物理サーバに接続されたゲームコントローラー(ゲームパッド)は、/dev/inputディレクトリ配下のデバイスファイルで認識されます。したがって、ホストOSのデバイスをDockerコンテナから利用するには、以下のようにホストOSのゲームコントローラーのデバイスのディレクトリをコンテナと共有します。
# docker run \ ... --device=/dev/input:/dev/input \ ←ゲームコントローラーのデバイスを共有 ... ubuntu:mygame01 /bin/bash
ただし、ゲームアプリ側で/dev/inputディレクトリ以下のデバイスを取り扱えることが前提であり、ゲームアプリによっては、認識が一切できない場合や、コントローラーの動作の一部が実現できない場合もありますので、環境によって動作可否が異なります。
疑問3についてですが、ホストOSが稼働する物理マシンに搭載されたサウンドカードをDockerコンテナから利用するには、ホストOSの/dev/sndをコンテナと共有します。もちろんホストOS側で、/dev/sndディレクトリ配下に存在するデバイスファイル経由で、ホストOSに搭載されたサウンドカードに接続されたスピーカーから音が鳴ることが前提条件です。Dockerコンテナの起動時のオプションとしては、ゲームコントローラーの場合と同様に、「--device」オプションを使って、サウンドデバイスをホストOSとコンテナで共有します。
# docker run \ ... --device=/dev/snd:/dev/snd \ ←サウンドデバイスのディレクトリを共有 ... ubuntu:mygame01 /bin/bash
DockerコンテナからホストOSが稼働する物理マシンに接続されたサウンドカード経由で音を鳴らす以外にも、Pulseaudio(パルスオーディオ)をよばれるソフトウェアを使うと、遠隔にある物理マシンのサウンドカードで音を鳴らすことも可能です。Pulseaudioを使って、Dockerコンテナから遠隔にある物理マシンのサウンドカードで音を鳴らす方法、システム構成例、具体的な設定方法は、書籍「Docker実践ガイド」に掲載しています。
最後に疑問4について、これは連載第17回、18回、19回でご紹介した「ボリュームの共有」で実現できます。今回は、Dockerコンテナを起動するユーザーのホームディレクトリに生成されるゲームアプリごとの隠しディレクトリを共有することによって、前回起動したゲームアプリの状態を保持します。例えば、ドライブシミュレータのゲームアプリ「Vdrift」の場合は、以下のように隠しディレクトリ「$HOME/.vdrift」をホストOSとコンテナで共有します。これにより、Dockerコンテナ上の「$HOME/.vdrift」ディレクトリに生成されたゲームアプリの各種データは、ホストOS上の「$HOME/.vdrift」ディレクトリに保存されます。
# docker run \ ... -v $HOME/.vdrift:$HOME/.vdrift \ ... ubuntu:mygame01 /bin/bash
Copyright © ITmedia, Inc. All Rights Reserved.