This repository contains a Dockerfile that creates a
Docker image with GNSS-SDR
and its dependencies installed via .deb
packages. This includes
GNU Radio and drivers for a wide range of RF front-ends
through UHD,
gr-osmosdr and
gr-iio.
This image uses baseimage-docker, a special Docker image that is configured for correct use within Docker containers. It is Ubuntu, plus:
- Modifications for Docker-friendliness.
- Administration tools that are especially useful in the context of Docker.
- Mechanisms for easily running multiple processes, without violating the Docker philosophy.
- Reduced footprint on RAM.
If you still have not done so, install Docker and verify your installation before proceeding to use or build the Docker image.
You can download (pull) the image via the following command:
$ docker pull carlesfernandez/docker-gnsssdr
Run:
$ docker run -it carlesfernandez/docker-gnsssdr
Maybe you want to include a local folder with GNSS raw data to process in your container, or to extract output files generated during its execution. You can do that by running the container as:
$ docker run -it -v /home/user/data:/data carlesfernandez/docker-gnsssdr
This will mount the /home/user/data
folder in the host machine on the /data
folder inside the container, with read and write permissions.
-
On GNU/Linux host machines
Install the X11 server utilities in the host machine:
- Debian:
apt-get install x11-xserver-utils
- Ubuntu:
apt-get install x11-xserver-utils
- Arch Linux:
pacman -S xorg-xhost
- Kali Linux:
apt-get install x11-xserver-utils
- CentOS:
yum install xorg-xhost
- Fedora:
dnf install xorg-xhost
- Raspbian:
apt-get install x11-xserver-utils
Each time you want to use the graphical environment, adjust the permission of the X server in the host by the following command:
$ xhost +local:root
Then run the container with:
$ sudo docker run -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/root/.Xauthority \ --net=host -it carlesfernandez/docker-gnsssdr
In case you want to revoke the granted permission:
$ xhost -local:root
- Debian:
-
On macOS host machines
Do this once:
- Install the latest XQuartz version and run it.
- Activate the option "Allow connections from network clients" in XQuartz settings.
- Quit and restart XQuartz to activate the setting.
Each time you want to use the graphical environment, type in the host machine (with XQuartz already running):
$ xhost + 127.0.0.1
Then run the container with:
$ docker run -e DISPLAY=host.docker.internal:0 -v $HOME/.Xauthority:/root/.Xauthority \ --net=host -it carlesfernandez/docker-gnsssdr
-
Test it!
In the container:
root@ubuntu:/home# gnuradio-companion
This step is not needed if you have pulled the docker image. If you want to build an updated Docker image on your own, go to the repository root folder and run the following command:
$ docker build -t carlesfernandez/docker-gnsssdr .
You can change the tag name carlesfernandez/docker-gnsssdr
at your own
preference.
By default, this will build the content in the next
branch of the upstream
repository https://github.com/gnss-sdr/gnss-sdr. You can change the default
Github user, repo and branch with the following building flags:
$ docker build -t username/docker-gnsssdr \
--build-arg GITHUB_USER=my_github_username \
--build-arg GITHUB_REPO=my_repo \
--build-arg GITHUB_BRANCH=my_branch .
The default values are GITHUB_USER=gnss-sdr
, GITHUB_REPO=gnss-sdr
, and
GITHUB_BRANCH=next
.
Copyright: © 2017-2023 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is published under the MIT license.
This work is partially supported by PID2021-128373OB-I00 (2022-2025).
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project (2018-2022).