Running League of Legends from a Docker container.
*** This no longer works ***
The client will launch and you can browse the store but you won't be able to start a game.
Details can be found here : https://boards.na.leagueoflegends.com/en/c/bug-report/sB4ucqXc-game-client-anti-cheat-changes-going-live
My first experience of League of Legends was on a 7 year old laptop with Windows 7 installed. As a daily linux user however I would prefer to play on linux.
There are a number of ways to play League of Legends on linux. Options include using PlayOnLinux or wine. Most guides involve multiple manual steps, tweaks and workarounds. Please ensure you have at least the minimum spec of graphics card to run LoL. See the official documentation for more details.
As a Docker lover what if we could play League of Legends with a single command? This script was tested on Ubuntu 17.10. I've been playing League of Legends daily using this setup for the past 3 months and haven't encountered any serious issues.
./league-of-legends.sh
The first time this script is run it will build the League of Legends container image, walk through the installation process and then start the client. At the end of the installation you will be prompted on whether you want to "Start League of Legends". You can leave this box ticked and click finish.
If the League of Legends client is not running and you want to start it just run : ./league-of-legends.sh
That's it. Expect more updates to this in the coming weeks. GL;HF!
Build lol image :
docker build -t lol .
Start a container based on the lol image :
We are sharing in 2 devices; sound and NVIDIA graphics card. To find the device name of your graphics card run : ls /dev/dri
You should see a card0. Add this into the second --device
option below. We run xhost +
to allow the container to connect to the Xserver on the host (for the current session only).
Example :
xhost +
docker run -it --net host -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device /dev/snd --security-opt seccomp:unconfined --name lol --device=/dev/dri/card0:/dev/dri/card0 --entrypoint /bin/bash lol:latest
To start the LOL installer run :
WINEPREFIX=~/.LoL64 wine /root/lol.exe
Accept the defaults and the installation should complete successfully. Untick the "Start League of Legends" box in the final screen and click exit.
The following command will start the client. Select the Region you wish to play in and the rest of the game will be downloaded.
WINEPREFIX=~/.LoL64 wine "/root/.LoL64/drive_c/Riot Games/League of Legends/LeagueClient.exe"
Here are 2 helper aliases that can be used to start and stop League of Legends. You can add these to your ~/bash_aliases file.
alias startlol="xhost + ; docker start lol ; docker exec -it lol /bin/bash -c \"WINEPREFIX=~/.LoL64 wine '/root/.LoL64/drive_c/Riot Games/League of Legends/LeagueClient.exe'\""
alias stoplol="docker stop lol"
Careful now : If you remove the lol container you will lose the downloaded client from Step 4. To completely remove the lol container and the lol image run :
docker rm -f lol
docker rmi lol:latest
While the above should just work it still needs some more refinement. More updates incoming.
Logs :
docker exec -it league-of-legends /bin/bash -c "cd \"/root/.LoL64/drive_c/Riot Games/League of Legends/Logs/LeagueClient gs\" ; ls -rt |tail -2 |xargs tail -f"