Introduction
This tutorial covers running the rt-mbms receiver processes as Docker containers on Linux. It is a receiver-only setup (it does not include a transmitter). The containers cover rt-mbms-modem, rt-mbms-mw, rt-wui and nginx, run individually and interacting with each other over the native Docker network.
What you will build: the 5G Broadcast receiver (modem, middleware, web interface and nginx proxy) running as four Docker containers.
Components
This receiver stack is built from three repositories, one of which provides both the web UI and the nginx container:
Prerequisites
- Docker installed on the host (see Step 1 below).
- The same hardware, SDR and operating-system requirements as the native setup. To avoid duplication (and drift), see the shared Requirements page. In short: a live setup needs a supported SDR, while running from sample files does not.
Installation of rt-mbms processes with Docker
The installation has four steps, matching the sections below:
- Install the Docker engine.
- Build the Docker images.
- Run the containers.
- Execute (enter) the containers.
Step 1: Install Docker
Dockerhub hosts the docker engine repos which can be easily installed locally to start working with docker.
Alternatively, easy to use shell script can be found here!
Step 2: Build the images
The files for the docker implementation are contained in rt-mbms-modem, rt-mbms-mw, rt-wui and nginx.
The Dockerfile helps to create a docker image, which can be used to run the containers.
The command docker build uses by default the Dockerfile to create the image. For custom docker files go with
docker build -f /path/to/Dockerfile -t target_image_name /location/of/Dockerfile
There is a build.sh script on each folder for easy access.
Note: Please edit the appropriate path to the sample files in the last line of startup script for modem process before building the container.
Step 3: Run the containers
The modem, middleware, wui and nginx containers can be run using the run.sh script in their respective folders.
The run.sh script contains the docker logs command which helps the user to have an idea on what is happening inside
the containers.
Note: Please build docker images and run the containers in the order of
- rt-mbms-modem
- rt-mbms-mw
- rt-wui
- nginx respectively
The resulting IP addresses of the containers are
Modem - 172.17.0.2
mbms-mw - 172.17.0.3
wui - 172.17.0.4
nginx - 172.17.0.5
sudo docker inspect container_name | grep IPAddress returns the IP of the container.
If your containers get different IPs, update the matching field in each config file so the components can reach each other:
| Container | Assign its IP in |
|---|---|
| Modem | (referenced by the middleware and wui config) |
| mbms-mw | 5gmag-rt.conf |
| wui | the wui config file |
| nginx | the nginx config file |
Step 4: Execute (enter) the containers
The docker exec command lets you get a shell inside a container:
docker exec -it container_name /bin/bash
The list of the containers (running or exited) can be viewed using:
docker ps -a . The status column shows the status of each container.
A running container can be stopped using:
docker stop container_name
An exited or obsolete container can be removed using:
docker rm container_name
Next steps
- For the equivalent native (non-Docker) receiver setup, see SDR - HLS Playback over 5G Broadcast.
- Return to the Tutorials index.