Tools to create Docker images for Flexiv Elements and Flexiv Elements Studio so multiple instances can run on the same computer using Docker containers.
Currently, only Ubuntu 22.04 is tested as the host operating system.
Ensure you have Docker installed and configured to run without sudo (non-root user access).
Place your Flexiv installation folders under the package/ directory:
- For Elements:
package/FlexivElements/ - For Elements Studio:
package/FlexivElementsStudio/
Make sure there's no nested root directories like FlexivElements/FlexivElements_v3.11/.
Run the script corresponding to the application you want to pack:
-
For Flexiv Elements:
./build_image_for_elements.sh
-
For Flexiv Elements Studio:
./build_image_for_elements_studio.sh
Follow the interactive prompts to define the image tag and toggle options (such as selecting a physics engine or exporting the image as a tarball).
Launch the container by running the respective script. You can pass the tag as an argument, or leave it blank to be prompted:
-
For Flexiv Elements:
./run_elements_in_container.sh <tag>
-
For Flexiv Elements Studio:
./run_elements_studio_in_container.sh <tag>
The containers are configured to use the host network (--network host). This allows programs running inside the container (e.g. Flexiv Elements, the simulated robots, etc.) to communicate natively and with low-latency with programs on the host or other machines, such as NVIDIA Isaac Sim, Flexiv RDK, and Flexiv TDK.
Security notice: The run scripts start containers with elevated privileges (
--cap-add SYS_ADMIN,--device /dev/fuse,--security-opt apparmor:unconfined) in addition to host networking. These settings are required for the application's filesystem and IPC features, but they reduce container isolation. Avoid running these containers on shared or untrusted machines, and ensure that only trusted Docker images are used.
The execution scripts automatically handle:
- GUI & Display Forwarding: X11 authority and Wayland support are mounted to display GUIs seamlessly.
- GPU Acceleration: Passes
/dev/drito ensure OpenGL stability. - Multi-Instance Management: Scans for existing containers from the same image and provides an option to restart/attach to an existing one or start a brand new randomized container.