Advice on Docker on 20.04 vs. native 18.04: pros and cons

Hi

I am curious if there are any downsides to doing isaac (isaac sim) development in docker vs. native? I have a 20.04 PC, and if need be, I can downgrade it to 18.04, but if the docker experience is comparable, I would prefer, all things being equal to stick with 20.04. From the posts it sounds like you can run the Unity3D sim in a docker container, right?

Thanks for your time.

bb

1 Like

I have the same setup and I have no problems, including Unity3D sim (launches in container).

I use native on my 18.04 workstation, and docker for my 20.04 laptop so I can do field deployment.
Here are some of the things I have noted:

Native approach:
con: Native pollutes the system’s python3.6 interpreter with a very large number of packages, since the install script doesn’t use a virtual environment.
con: pollutes installed packages and can be incompatible with unrelated projects that use different versions of Nvidia components such as CUDA.
con: Only supports Ubuntu 18.04
pro: code resolution works with IDEs that understand Bazel
pro: simpler setup and usage
pro: no additional effort required to use hardware devices such as USB sensors.

Container approach:
pro: self-contained environment
pro: Can be used on any system that supports Docker and x86/x64 containers.
con: Not sure you can pass hardware devices into containers.
con: Limited IDE support. Probably works If you have a language server, but I can safely say Clion+bazel plugin doesn’t work anywhere near as well as native.

You can install and run CLion in the container too in your case. I have seen several others do this, though I prefer VS Code these days which has great support for running a server in the container. I’ve had no problem exposing all of the required hardware through to the container.

Interesting, I hadn’t considered deploying the IDE into the container, I will need to try that.
Same goes for hardware passthrough, will investigate.

Thank you for the suggestions!