Show EOL distros:
Package Summary
Simply running ros nodes in docker containers on remote robots.
- Maintainer status: developed
- Maintainer: Christian Henkel <post AT henkelchristian DOT de>
- Author:
- License: BSD
- Source: git https://github.com/ct2034/dockeROS.git (branch: master)
Package Summary
Simply running ros nodes in docker containers on remote robots.
- Maintainer status: developed
- Maintainer: Christian Henkel <post AT henkelchristian DOT de>
- Author:
- License: BSD
- Source: git https://github.com/ct2034/dockeros.git (branch: master)
Contents
dockeros
Simply running ros nodes in docker containers on remote robots.
This is supposed to deliver tools to use the methods of edge computing for ROS enabled robots. These methods include 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 that makes use of these tools in a client-server structure.
Media
Video
Presentation at ROS Industrial Conference 2018
Podcast
Podcast with Ricardo Tellez
Prerequesits
On your PC (the Server)
The python packages required by the server can be installed via 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 the robot they should run on. If you want to build them in a central place (the server), you need to run a docker registry on that server: 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 it is called unsafe).
On the Robot (Client)
On the robot you need to have a docker deamon running with an accesible 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
The CLI
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,run,stop,push} 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 https://dockr.ly/2zMPc17 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
Contribution
All contributions are welcome. Especially important is at the moment:
Testing
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
Troubleshooting
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 )
"insecure-registries":["YOUR_REGISTRY:5000"]
and restart your docker deamon.
sudo systemctl restart docker