2019年5月18日土曜日

dockerにてsteamを動かす方法のメモ

タイトル通り、メモ的なところであって、正しく動くとは限りません
また、今回のミソというべきところはDockerFileというよりもdockerを起動するためのコマンドラインかもしれません。
This is a memorandum running steam on docker,so may not run correctly.
And this article is treated command line to run docker option mainly,not DockerFile.

まず、基本となるDockerFile
FROM ubuntu:18.04
RUN cat /etc/resolv.conf
RUN sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list
RUN cat /etc/apt/sources.list
RUN apt-get update && apt-get install -y zenity wget
# add the sources.list stuff that steam will at first start
RUN wget http://repo.steamstatic.com/steam/archive/precise/steam_latest.deb
RUN apt install -y python-minimal curl xterm gnome-terminal konsole python-apt
RUN dpkg -i *.deb
RUN dpkg --add-architecture i386
# let's head off a few of the things steam will want to install immediately
RUN apt-get update && \
apt-get install -yq \
libgl1-mesa-dri:i386 \
libgl1-mesa-glx:i386 \
libc6:i386
# steam itself needs to be able to install things, and it uses "sudo" for that
RUN apt-get install -yq sudo
RUN echo 'steam ALL = NOPASSWD: ALL' > /etc/sudoers.d/steam && chmod 0440 /etc/sudoers.d/steam
RUN adduser --disabled-password --gecos 'Steam' steam && \
adduser steam video
USER steam
ENV HOME /home/steam
VOLUME /home/steam
CMD /bin/bash

イメージを作るコマンドライン
docker build -t steam .
コンテナを作るコマンドライン
docker run --name steam --privileged -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix -it steam bash
コンテナを起動し入るコマンドライン
docker start steam && docker exec --privileged -e DISPLAY=${DISPLAY} -it steam bash

ずら~っと並べましたが、DockerFile はtianon氏のを参考にしました。
ぶっちゃけよくよく見ると他のが必要になっているというオチでした。
dockerhubにたくさん上がってますが、個人的な備忘録なので、クオリティはお察しです。

んで、具体的に何しているのか何に応用できるのかという話が、大事だと思います。

DockerFileでは
まず、imageを決めています、ここは有名なubuntu、:以降はlatestでも何でもお好きに。
そして、謎のパッケージダウンロードができないエラーを修正、。クソ、ネイティブな構築でも遭遇する。
aptで更新と必要なものを入れます。zenityはGUIとCLIの架け橋らしいです。
wgetにてsteamのdebをゲット。
steamに必要らしいものをインストール。
steamをインストール。
ドライバ関係とsudoをインストール。
これ以降はuserを追加しているものになります。
最後の部分が違うのは何かしらのエラー対策です。

一部足りないものが(たぶん)あってprotonは走りません、根本的な問題かも知れません。

コマンドラインは、コンテナを作る部分だけ注意してください。
x11の共有をしていないときちんと動きません。

応用に対しては何かしらのGUIやGLを用いたいけど、環境を汚したくないときに役に立ちます。 
古いものを入れたりだとか大量にいろいろあって競合が怖いときに役に立ちます。

0 件のコメント:

コメントを投稿