Delivers a range of games straight to a computer's desktop.
Go to file
2016-10-25 14:18:12 +02:00
docker-compose.yml do not mount /dev/shm from host 2016-08-07 19:18:38 +02:00
Dockerfile Dockerfile: install required deps libjson-c3 2016-10-25 14:18:12 +02:00
launch fixing LD_PRELOAD 2016-08-07 13:57:54 +02:00
LICENSE Initial commit 2016-04-27 01:04:17 +02:00
README.md typo 2016-08-07 19:54:01 +02:00

Steam in Docker

Why?

Some people asked me why would someone want to have Steam in a Docker container?

Few main points which pushed me making this Docker container:

  1. I want to set-up more fences when running the code I don't/can't trust; issue 3671

  2. I don't want to spend time on figuring out how to install Steam (what deps) in a non-Debian (or non-SteamOS) based distro;

  3. I like cleanliness: I can erase Steam and all its dependencies in a matter of seconds;

And few Pros from my PoV:

  • I can have Steam on my Ubuntu/openSUSE/[put any other distro I will want to use] in a short time that Docker takes when downloads this Steam container;

  • Since Steam is meant to run in Debian (SteamOS) based distro, it is not a problem anymore, since it is in a container now.

Suggestions / PR's are welcomed!

What's tested?

The following games have been tested:

  • Half-Life: Counter-Strike 1.6
  • Counter-Strike: Global Offensive
  • Iron Snout

Tested in Ubuntu 16.04 LTS (64bit) and openSUSE Leap 42.1 with the following GPU's:

  • Intel HD Graphics 3000
  • Intel HD Graphics 4400
  • NVIDIA's GeForce GTX 560 Ti

Requirements

Building and launching Steam

Build Steam Docker image

You may want to re-run this command later on in order to keep the image updated.

docker build -t andrey01/steam .

Launch the Steam in Docker

You may need to allow your user making local connections to X server, which can be achieved with this command:

xhost +SI:localuser:$(id -un)

You can use the following shortcut function and place it to your ~/.bash_aliases file

function docker_helper() { { pushd ~/docker/$1; docker-compose rm -fa "$1"; docker-compose run -d --name "$1" "$@"; popd; } }
function steam() { { docker_helper $FUNCNAME $@; } }

Then just issue "steam" command to run Steam in docker.

Troubleshooting

You might want to modify the docker-compose.yml in case of problems, the file should be pretty self explanatory, although you may refer to the official Docker Compose file reference

Also keep in mind to uncomment or/and add your devices to the devices: section there.

The best result is when you have a similar to the following output, using the glxgears (part of mesa-utils package):

If you are getting segmentation fault error or Steam does not start, then you could try resetting its config:

$ docker-compose run --rm steam --reset

Grsecurity notes

grsec: TPE

Trusted Path Execution (TPE)

This Steam docker image is working with the grsecurity patched kernel. It only needs a /proc/sys/kernel/grsecurity/tpe_gid accessible by root for read.

grsec: PaX

It is also working with PaX part of the grsecurity.
I have tested it with Half-Life games like CS 1.6, and CS:GO.
Please refer to the launch file if grsecurity is blocking some executable or a library.

Links

Below is just bunch of links, someone might find them useful