Skip to content
Docker configuration and documentation for hosting
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Using LAVA with Docker

This is the repository that stores the configuration for The goals for this personal lab are:

  • kernelCI participation
  • lavafed participation
  • Best practice reference for deploying and managing LAVA
  • Personal enjoyment and learning

LAVA board farm with embedded ARM boards mounted in rack

Lab Description

This lab is deployed using Docker and docker-compose on a single physical LAVA server+dispatcher running on the same host, with several physical and virtual devices attached for testing. Over time, it may scale to multiple LAVA hosts and more boards.

Additional information about LAVA, Docker, and this lab can be found at Running LAVA with Docker Compose and Setting up a board farm with LAVA and Docker.


The configuration is specific to the boards in this lab. However, the approach to running LAVA may be useful as a reference.

The following specific containers are used in this deployment:

database: Postgresql container for LAVA server. Database stored in a docker volume.

squid: HTTP caching container. Cache stored in a docker volume.

server: LAVA server. job-output stored in a docker volume. Configuration files mounted in from this repository.

dispatcher: LAVA dispatcher. Requires escalated privileges for QEMU jobs as well as Docker jobs. Docker volumes mounted in for tftpd and nfsd.

ser2net: Serial port to telnet interface. Requires exclusive access to the serial devices.

tftpd-hpa: TFTPd container. Uses a docker volume which is also mounted into the dispatcher.

nfsd: NFSd container. Uses a docker volume which is also mounted into the dispatcher.


docker-compose up -d: Bring up the lab

docker-compose down: Bring down the lab


  1. Stop containers.

  2. Back up pgsql from its docker volume

    sudo tar cvzf $HOME/lava-server-pgdata-$(date +%Y%m%d).tgz /var/lib/docker/volumes/lava-server-pgdata

  3. Change e.g. lavasoftware/lava-server:2019.01 to lavasoftware/lava-server:2019.03 and lavasoftware/lava-dispatcher:2019.01 to lavasoftware/lava-dispatcher:2019.03 in docker-compose.yml.

  4. Change the FROM line if any containers are being rebuilt, such as ./dispatcher-docker/Dockerfile

  5. Start containers.

Useful Commands

Spy on the serial port:

docker-compose exec dispatcher telnet ser2net 5001 # beaglebone-black-01
docker-compose exec dispatcher telnet ser2net 5002 # x15-01

View logs:

docker-compose logs -f # all containers
docker-compose logs -f server # only the server
You can’t perform that action at this time.