Docker¶
You might run into a situation where you want to run multiple simulation instances of PlatformPilot, for example to test out a fleet of robots or to work simultaneously on multiple tasks. Hewever, if you just run multiple instances out of the box, they will all try to access the same network ports and write to the same log files, which is not going to work well. You can set up individual configurations to assign each instance its own resources without collisions, but that requires some work.
To simplify this task we provide a Docker configuration file which will help you to set up a testing environment. If you are not familiar with Docker please refer to the official documentation: https://docs.docker.com/
Building Container Image¶
Every neobotix-pilot-core-
debian package contains the corresponding Dockerfile
which can be easily extracted from the package.
Obtain the correct
neobotix-pilot-core-
debian package for your architechture and Ubuntu version.Obtain the
Dockerfile
either byinstalling the debian package. Then you can find it in:
/opt/neobotix/pilot-core/scripts/Dockerfile
or open the debian package with archiver program of your choice. Inside you will find another archive called
data.tar.*
. Open it and navigate to:/./opt/neobotix/pilot-core/scripts/Dockerfile
Put the
Dockerfile
in the same directory where the debian package is located and build the image like this:docker build -t <image_name> .
After successful build verify the image by running:
docker images
Running Simulation In The Container¶
You can run multiple instances of a Docker container from one single Docker image.
To run multiple pilot
instances you need to redirect ports in order to access them.
In this example four instances are started and the ports for the GTK GUI and the WebGUI are forwarded:
docker run --rm --name pilot-core-1 -p 5556:5555 -p 81:8888 <image_name> docker run --rm --name pilot-core-2 -p 5557:5555 -p 82:8888 <image_name> docker run --rm --name pilot-core-3 -p 5558:5555 -p 83:8888 <image_name> docker run --rm --name pilot-core-4 -p 5559:5555 -p 84:8888 <image_name>
To stop runnning containers use:
docker stop pilot-core-1 docker stop pilot-core-2 docker stop pilot-core-3 docker stop pilot-core-4