The isaac-ros-cli activate command forcibly binds to my local bashrc file, which is unmodifiable within Docker. This is causing compilation errors. How can I resolve this?
From the log you provided, it showed the below error.
Seems like the compilation step for the nvblox_test_data package is attempting to create directories and download test assets into a root-owned path, which your non-root user inside the Docker container does not have permission to access or create.
When you enter the container, you could check ISAAC_ROS_ASSET_DIR to make sure it’s a path that is accessible and writable by your current user. Normally it would be the below one,
After setting the environment variable, you must clean your previous build and re-run the build command so the CMAKE configuration (which uses this variable) is updated.
Creating non-root container ‘admin’ for host user uid=1000:gid=1000
cp: cannot create regular file ‘/home/admin/.bashrc’: Read-only file system
cp: cannot create regular file ‘/home/admin/.profile’: Read-only file system
chown: changing ownership of ‘/home/admin/.bashrc’: Read-only file system
chown: changing ownership of ‘/home/admin/.profile’: Read-only file system
udev: unrecognized service
To run a command as administrator (user “root”), use “sudo ”.
See “man sudo_root” for details.
The $ISAAC_ROS_WS inside the container is loaded from my external native machine, and I cannot modify it. like this:
You could reference this page for the Developer Environment Setup.
If you write it into your .bashrc file, then you don’t need to do it every time you enter the container.
For example, echo "export ISAAC_ROS_WS=/mnt/nova_ssd/workspaces/isaac_ros-dev/" >> ~/.bashrc
I think you haven’t understood me. /data/workspace/isaac_ros-dev-latest is my external working directory, but inside the container it’s /workspace/isaac_ros-dev. I set the environment variable ISAAC_ROS_WS=/data/workspace/isaac_ros-dev-latest externally, and I want the environment variable inside the container to automatically be ISAAC_ROS_WS=/workspace/isaac_ros-dev, not my external one.
Logged in to nvcr.io/nvidia/isaac/ros. Using this for cache.
[‘noble’, ‘ros2_jazzy’]
Dockerfile created: image_key = noble
Dockerfile created: image_key = ros2_jazzy
noble-ros2_jazzy_d3e84470d576702a380478a513fb3fc6-amd64: Pulling from nvidia/isaac/ros
Digest: sha256:82cb5792395aaa0834dc0d02878b3e90d89e215ee0677539e06df0336086ad6e
Status: Image is up to date for nvcr.io/nvidia/isaac/ros:noble-ros2_jazzy_d3e84470d576702a380478a513fb3fc6-amd64
Using image: nvcr.io/nvidia/isaac/ros:noble-ros2_jazzy_d3e84470d576702a380478a513fb3fc6-amd64
Using additional Docker run arguments from [‘/etc/isaac-ros-cli/.isaac_ros_dev-dockerargs’]
[‘-v /home/zhaohan/.ssh:/home/admin/.ssh:ro’, ‘-v /home/zhaohan/.aws:/home/admin/.aws:ro’, ‘-v /home/zhaohan/.cache:/home/admin/.cache’, ‘-v /home/zhaohan/.config:/home/admin/.config’, ‘-v /home/zhaohan/.gitconfig:/home/admin/.gitconfig’, ‘-v /home/zhaohan/.bash_history:/home/admin/.bash_history’]
Running isaac_ros_dev_container
Creating non-root container ‘admin’ for host user uid=1000:gid=1000
cp: cannot create regular file ‘/home/admin/.bashrc’: Read-only file system
cp: cannot create regular file ‘/home/admin/.profile’: Read-only file system
chown: changing ownership of ‘/home/admin/.bashrc’: Read-only file system
chown: changing ownership of ‘/home/admin/.profile’: Read-only file system
udev: unrecognized service
To run a command as administrator (user “root”), use “sudo ”.
See “man sudo_root” for details.
I solved the problem. The correct command is echo 'export ISAAC_ROS_WS="${ISAAC_ROS_WS:-${HOME}/workspaces/isaac_ros-dev/}"' >> ~/.bashrc, where the hyphen (-) is necessary.
Hello, I encountered a similar issue.
When I open the container using isaac-ros activate, it shows the following:
Logged in to nvcr.io/nvidia/isaac/ros. Using this for cache.
[‘noble’, ‘ros2_jazzy’, ‘realsense’]
Dockerfile created: image_key = noble
Dockerfile created: image_key = realsense
Dockerfile created: image_key = ros2_jazzy
Error response from daemon: manifest for nvcr.io/nvidia/isaac/ros:noble-ros2_jazzy-realsense_b0aad936068eea75f2a520c7dd1a4f88-amd64 not found: manifest unknown: manifest unknown
Using image: nvcr.io/nvidia/isaac/ros:noble-ros2_jazzy-realsense_b0aad936068eea75f2a520c7dd1a4f88-amd64
Using additional Docker run arguments from [‘/etc/isaac-ros-cli/.isaac_ros_dev-dockerargs’]
[‘-v /home/robert/.ssh:/home/admin/.ssh:ro’, ‘-v /home/robert/.aws:/home/admin/.aws:ro’, ‘-v /home/robert/.cache:/home/admin/.cache’, ‘-v /home/robert/.config:/home/admin/.config’, ‘-v /home/robert/.gitconfig:/home/admin/.gitconfig’, ‘-v /home/robert/.bash_history:/home/admin/.bash_history’]
Running isaac_ros_dev_container
Creating non-root container ‘admin’ for host user uid=1000:gid=1000
cp: cannot create regular file ‘/home/admin/.bashrc’: Read-only file system
cp: cannot create regular file ‘/home/admin/.profile’: Read-only file system
chown: changing ownership of ‘/home/admin/.bashrc’: Read-only file system
chown: changing ownership of ‘/home/admin/.profile’: Read-only file system
udev: unrecognized service
To run a command as administrator (user “root”), use “sudo ”.
See “man sudo_root” for details.
Yes, that behavior is normal. We are working to clean up the pre-launch output and more clearly communicate if there are legitimate errors requiring your attention.
Here’s a quick explanation for each of the warnings you’re seeing:
Error response from daemon: manifest for ... not found:
This message indicates that the requested Docker image was not found as a prebuilt image in NVIDIA’s public registry
This is expected, since you requested noble.ros2_jazzy.realsense - we currently only provide prebuilt images for noble.ros2_jazzy. As explained here, users who wish to use the RealSense layer must build that extra layer locally.
As a convenience feature, Isaac ROS CLI attempts to copy in your personal ~/.bashrc and ~/.profile dotfiles into the Isaac ROS development container
However, in some cases, this behavior is undesirable or causes conflicts. We will make this an opt-in feature in a future version of the Isaac ROS CLI
udev: unrecognized service
As a convenience feature, Isaac ROS CLI ships with udev rules to automatically mount specific USB-connnected sensors into the Isaac ROS development container whenever they are unplugged or plugged back in
Some of these scripts reference the old udev service instead of using the udevadm interface. We will update this behavior and ship corrected udev scripts in a future version of Isaac ROS CLI