dockeros repository

Repository Summary

Checkout URI
VCS Type git
VCS Version master
Last Updated 2019-07-16


Name Version
dockeros 1.0.3



Simply running ros nodes in docker containers on remote robots.

PRs Welcome t: tavis_status bf: Build Status bf_doc: Build Status cc: Maintainability


This is supposed to deliver tools to use the methods of edge computing for ROS enabled robots. As of methods we currently mainly focus on a fast and seamless deployment of software to edge devices (i.e. robots, and others).

The dockeros library is designed to create and update docker images for ros packages. There is a CLI to use these capabilities in your development lifecycle and plans to build a GUI that makes use of these tools in a client-server structure.


On your PC (the Server)

The python packages required by the server can be installed via sudo pip install -r requirements.txt. To install docker, you can use this.

Optional: Registry

Without a registry, you will need to build the images on th robot, if, you want to run them there. You will also need to run a docker registry on your system: docker run -d -p 5000:5000 --name registry registry. You can also use the unsafe_registry in this repository. It will allow CORS (which is why I called it unsafe).

On the Robot (Client)

On the robot you need to have a docker deamon running with an accesibly API. To install docker, you can use this. A good way to do this on systems running systemd is can be found here. We strongly recommend to use TLS for your deamons socket


usage: dockeros [-h] [-e | -i HOST:PORT] [-f DOCKERFILE] [-n]
                {build,run,stop,push} ...

Simply running ros nodes in docker containers on remote robots.

positional arguments:
                        build: Creates an image that can run roscommand
                        run: Runs an image with your_roscommand (and builds it first)
                        stop: Stops image that runs that command
                        push: Push image to predefined registry
  roscommand            Everything after the subcommand will be interpreted as the ros command to be run in your image

optional arguments:
  -h, --help            show this help message and exit
  -e, --env             use the existing docker environment (see for details)
  -i HOST:PORT, --ip HOST:PORT, --host HOST:PORT
                        set the host (robot) to deploy image to
  -f DOCKERFILE, --dockerfile DOCKERFILE
                        use a custom Dockerfile
  -n, --no-build        dont (re-)build the image before running

screencast of dockeros run


All contributions are welcome. Especially important is at the moment:


Please open issues for all problems you encounter. Please make sure, that your problem is reproducible though: Add the rosdistro, package, exact command and Dockerfile (if applicable) that you are using


Registry with http

When you get this error: {"errorDetail":{"message":"Get https://YOUR_REGISTRY:5000/v2/: http: server gave HTTP response to HTTPS client"},"error":"Get https://YOUR_REGISTRY:5000/v2/: http: server gave HTTP response to HTTPS client"} while trying to push:

Add the server to your unsafe registries in daemon.json (default at /etc/docker/daemon.json )


and restart your docker deamon.

sudo systemctl restart docker