boinc/client
The official BOINC client. https://github.com/BOINC/boinc-client-docker
10M+
The client can be accessed remotely or locally with any BOINC Manager.
Contents
2020.08.02:Breaking change! The NVIDIA-Docker version 2.0 has been deprecated, the required version is Native GPU Support(https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)). Docker run
script slightly changed too.
2018.12.03:Breaking change! From version 7.10.2 on Linux the default working directory changed to/var/lib/boinc
from /var/lib/boinc-client
. We changed our images accordingly. The new images must be run with the new commands, or it won't recognize the previous data and settings.
The following command runs the BOINC client Docker container,
docker run -d \
--name boinc \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client
You can attach a BOINC Manager to the client by launching the BOINC Manager, going to File > Select computer...
, and entering the IP address of the PC running the Docker container in the "Host name" field (127.0.0.1
if running locally) as well as the password you set with BOINC_GUI_RPC_PASSWORD
(here 123
),
As usual, the client can also be controlled from the command line via the boinccmd
command.
From the same computer as the one which is running the Docker container, you can issue commands via,
docker exec boinc boinccmd <args>
From other computers, you should use instead,
docker run --rm boinc/client boinccmd --host <host> --passwd 123 <args>
where <host>
should be the hostname or IP address of the machine running the Docker container.
You are also free to run boinccmd
natively if you have it installed, rather than via Docker.
You can specialize the boinc/client
image with either of the following tags to use one of the specialized container version instead.
Tag | Info |
---|---|
latest , base-ubuntu | Ubuntu based BOINC client. All of our x86-64 images are based on this. |
base-alpine | Alpine based BOINC client. IMPORTANT: Alpine uses musl instead of glibc, therefore projects might not support it. |
amd | AMD GPU-savvy BOINC client. Check the usage below. |
intel | Intel GPU-savvy BOINC client. It supports Broadwell (5th generation) CPUs and beyond. Check the usage below. |
intel-legacy | Legacy Intel GPU-savvy BOINC client (Sandybridge - 2nd Gen, Ivybridge - 3rd Gen, Haswell - 4th Gen). Check the usage below. |
multi-gpu | Intel & Nvidia-savvy BOINC client. Check the usage below. |
nvidia | NVIDIA-savvy (CUDA & OpenCL) BOINC client. Check the usage below. |
virtualbox | VirtualBox-savvy BOINC client. Check the usage below. |
Tag | Info |
---|---|
arm32v7 | ARMv7 32-bit savvy BOINC client. Check the usage below. |
arm64v8 | ARMv8 64-bit savvy BOINC client. Check the usage below. |
AMD GPU-savvy BOINC client usage
docker run -d \
--name boinc \
--device /dev/dri:/dev/dri \
--device /dev/kfd:/dev/kfd \
--net=host \
--pid=host \
--group-add video \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:amd
Intel GPU-savvy BOINC client usage
docker run -d \
--name boinc \
--device /dev/dri:/dev/dri \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:intel
Legacy Intel GPU-savvy BOINC client usage
docker run -d \
--name boinc \
--device /dev/dri:/dev/dri \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:intel-legacy
Multi GPU-savvy BOINC client usage
docker run -d \
--gpus all \
--name boinc \
--device /dev/dri:/dev/dri \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:multi-gpu
NVIDIA-savvy BOINC client usage
docker run -d \
--gpus all \
--name boinc \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:nvidia
VirtualBox-savvy BOINC client usage
virtualbox-dkms
package on the host. NOTE: The version of the Virtualbox must by identical (major.minor.patch) on the host and the container.docker run -d \
--name boinc \
--device=/dev/vboxdrv:/dev/vboxdrv \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:virtualbox
ARMv7 32-bit savvy BOINC client usage
docker run -d \
--name boinc \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:arm32v7
ARMv8 64-bit savvy BOINC client usage
docker run -d \
--name boinc \
--net=host \
--pid=host \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:arm64v8
You can use a Docker Swarm to launch a large number of clients, for example across a cluster that you are using for BOINC computation. First, start the swarm and create a network,
docker swarm init
docker network create -d overlay --attachable boinc
If you want, you can connect other nodes to your swarm by running the appropriate docker swarm join
command on worker nodes as prompted above (although you can just run on one node too).
Then launch your clients,
docker service create \
--replicas <N> \
--name boinc \
--network=boinc \
-p 31416 \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client
You now have <N>
clients running, distributed across your swarm. You can issue commands to all of your clients via,
docker run --rm --network boinc boinc/client boinccmd_swarm --passwd 123 <args>
Note you do not need to specify --host
. The boinccmd_swarm
command takes care of sending the command to each of the hosts in your swarm.
Docker Swarm does not support pid=host
mode. As a result, client settings related to non-boinc CPU usage or exclusion apps will not take effect.
When running the client, the following parameters are available (split into two halves, separated by a colon, the left hand side representing the host and the right the container side).
Parameter | Function |
---|---|
-e BOINC_GUI_RPC_PASSWORD="123" | The password what you need to use, when you connect to the BOINC client. |
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" | The --allow_remote_gui_rpc command-line option allows connecting to the client with any IP address. If you don't want that, you can remove this parameter, but you have to use the -e BOINC_REMOTE_HOST="IP" . |
-v /opt/appdata/boinc:/var/lib/boinc | The path where you wish BOINC to store its configuration data. |
-e BOINC_REMOTE_HOST="IP" | (Optional) Replace the IP with your IP address. In this case you can connect to the client only from this IP. |
-e TZ=Europe/London | (Optional) Specify a time zone. The default is UTC +0. |
--pid=host | (Optional) Share the host's process namespace, basically allowing processes within the container to see all of the processes on the system. Allows boinc to determine nonboinc processes for CPU percentages and exclusive applications. |
You can create the following docker-compose.yml
file and from within the same directory run the client with docker-compose up -d
to avoid the longer command from above.
version: '2'
services:
boinc:
image: boinc/client
container_name: boinc
restart: always
network_mode: host
pid: host
volumes:
- /opt/appdata/boinc:/var/lib/boinc
environment:
- BOINC_GUI_RPC_PASSWORD=123
- BOINC_CMD_LINE_OPTIONS=--allow_remote_gui_rpc
docker build -t boinc/client -f Dockerfile.base-ubuntu .
docker exec -it boinc /bin/bash
docker logs -f boinc
docker pull boinc/client