Skip to main content
5G Broadcast - TV and Radio Services

Docker support for rt-mbms client components (Linux)

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 SDR signal or sample file
  • 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:

  1. Install the Docker engine.
  2. Build the Docker images.
  3. Run the containers.
  4. 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

  1. rt-mbms-modem
  2. rt-mbms-mw
  3. rt-wui
  4. 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:

ContainerAssign its IP in
Modem(referenced by the middleware and wui config)
mbms-mw5gmag-rt.conf
wuithe wui config file
nginxthe 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

You now have the rt-mbms receiver stack running as four Docker containers. The modem, middleware, web UI and nginx are each running and reachable over the Docker network.

Next steps