BOINC and Docker
Docker is a system that lets you develop apps in the environment of your choice (OS, system software, libraries etc.) and then package up the environment and run it on hosts with different native environments.
It's sort of like traditional virtual machines (VMware, VirtualBox) but differs in several ways:
- Efficiency: Docker images are generally much smaller, they can be instantiated much faster, and they have less runtime overhead.
- There are better tools for creating Docker images.
- There's a free Docker hub where you can host and distribute images.
- Docker images can run only on modern (3.10+ kernel) 64-bit Linux hosts
Efforts are underway to use Docker to simplify BOINC - in particular to simplify the tasks of creating a BOINC project, and of deploying applications in BOINC.
Eventually we expect this to be the standard way for scientists to use BOINC. In the meantime, this page serves to link to information on development efforts.
Docker-based BOINC server
Marius Millea has packaged the BOINC server as a Docker application. This is described here: https://github.com/marius311/boinc-server-docker/blob/master/docs/cookbook.md
There's also a video here: http://cosmicmar.com/2016/02/14/boinc-server-docker-1/
In this implementation, the server consists of three Docker "containers":
- The MySQL database
- The Apache web server
- The BOINC back-end programs and command-line tools.
The project's state is stored in Docker "volumes" that are shared between these containers.
Docker-based BOINC applications
You can also use Docker to deploy your Linux-based applications on BOINC. The preferred way to do this is:
- Your various applications are run under a single BOINC application, which we'll call the "universal Docker application".
- Your Docker image and job input files are all part of the BOINC workunit. The image files are "sticky" so they're downloaded only once.
Docker only runs on recent Linux, so on Win and Mac the universal Docker application uses a VirtualBox virtual machine to host Docker containers.
Support for this is included in the BOINC server package described above.
With this system, running a job under BOINC is as simple as running a Docker container (i.e. it's a single command).
The caveats are that Docker jobs will on only run on hosts that:
- are 64-bit Intel-compatible
- have VM extensions in hardware (almost all do)
- have these extensions enabled in BIOS
- have VirtualBox installed
Also, as of now you can't run GPU applications in this framework.