playonlinux-docker/README.md

98 lines
3.3 KiB
Markdown

# playonlinux-docker
[![Build Status](https://jenkins.sudo.is/buildStatus/icon?job=ben%2Fplayonlinux-docker%2Fmain&style=flat-square)](https://jenkins.sudo.is/job/ben/job/playonlinux-docker/job/main/)
[![git](docs/img/shields/git.sudo.is-ben-playonlinux-docker.svg)](https://git.sudo.is/ben/playonlinux-docker)
[![github](https://git.sudo.is/ben/infra/media/branch/main/docs/img/shields/github-benediktkr.svg)](https://github.com/benediktkr/playonlinux-docker)
![Docker pulls](https://img.shields.io/docker/pulls/benediktkr/playonlinux?sort=semver&color=blue&style=flat-square)
![Image size](https://img.shields.io/docker/image-size/benediktkr/playonlinux/latest?sort=semver&label=size&style=flat-square)
![matrix](https://img.shields.io/static/v1?label=matrix&message=%23darkroom:sudo.is&color=purple&style=flat-square)
a docker container with [PlayOnLinux](https://www.playonlinux.com/en/), using Ubuntu 22.04 as the base image.
![screenshot of PlayOnLinux running in Docker](docs/img/scrot.png#center)
## usage
first create a directory for the PlayOnLinux data:
```shell
mkdir ~/playonlinux
```
pull and run the [`benediktkr/playonlinux` image from dockerhub](https://git.sudo.is/ben/playonlinux-docker/raw/branch/main/scrot.png):
```shell
docker run --rm -it --privileged --device /dev/dri/card0:/dev/dri/card0 -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v /dev/snd:/dev/snd:rw -v ~/playonlinux:/home/player:rw benediktkr/playonlinux:latest
```
if you want to run with a different UID and/or username, you can build the image.
### 3d hardware acceleration
hardware accelertion is possible, but you may have to install the correct drivers in
the `Dockerfile` (pull requests welcome). the intel drivers are installed by default
in the ubuntu image.
to pass your card to the container (as tested on an intel card):
```shell
--device /dev/dri/card0:/dev/dri/card0
```
modify as needed for other cards
## build
to build with the default username `player` and UID `1000`:
```shell
git clone https://git.sudo.is/ben/playonlinux-docker
docker build -t playonlinux .
```
if you need or want to use a different UID or username:
```shell
docker build --build-arg UID=1001 --build-arg USER_NAME=user -t playonlinux .
```
## running the container
start PlayOnLinux:
```shell
docker run --rm -it --privileged \
--device /dev/dri/card0:/dev/dri/card0 \
-e DISPLAY=:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /dev/snd:/dev/snd:rw \
-v ~/playonlinux:/home/player:rw \
playonlinux
```
starting Steam:
```shell
docker run --rm -it --privileged \
--device /dev/dri/card0:/dev/dri/card0 \
-e DISPLAY=:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /dev/snd:/dev/snd:rw \
-v ~/playonlinux:/home/player:rw \
playonlinux --run Steam
```
the `ENTRYPOINT` of the container is the `playonlinux` binary, and any arguments you
pass are passed to it.
these examples pass `--rm` to `docker run` to avoid leaving lingering stopped containers,
so you should mount `/home/player` to a directory to keep your installs and game saves.
## source
git repo: [git.sudo.is/ben/playonlinux-docker](https://git.sudo.is/ben/playonlinux-docker)
github: [benediktkr/playonlinux-docker](https://github.com/benediktkr/playonlinux-docker)
docker hub: [benediktkr/playonlinux](https://hub.docker.com/r/benediktkr/playonlinux)