Using LAVA with Docker
This is the repository that stores the configuration for lava.therub.org. The goals for this personal lab are:
- kernelCI participation
- lavafed participation
- Best practice reference for deploying and managing LAVA
- Personal enjoyment and learning
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.
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
tftpd-hpa: TFTPd container. Uses a docker volume which is also mounted into the
nfsd: NFSd container. Uses a docker volume which is also mounted into the
docker-compose up -d: Bring up the lab
docker-compose down: Bring down the lab
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
Change the FROM line if any containers are being rebuilt, such as ./dispatcher-docker/Dockerfile
Spy on the serial port:
docker-compose exec dispatcher telnet ser2net 5001 # beaglebone-black-01 docker-compose exec dispatcher telnet ser2net 5002 # x15-01
docker-compose logs -f # all containers docker-compose logs -f server # only the server