Build and develop a ROS 2 workspace
Overview
In this section, you will set up a ROS 2 workspace using Docker and development containers, review the workspace layout, open the workspace in Visual Studio Code, and edit and build ROS 2 projects inside the container.
Get the sample ROS 2 workspace
A consistent workspace simplifies managing ROS 2 projects and build artifacts across different distributions.
Open a terminal and clone the sample workspace repository:
$ git clone https://github.com/shakirth-anisha/docker-ros2-workspace.git $ cd docker-ros2-workspaceMoving forward, Linux users can use the
ws_linuxfolder, and macOS users can usews_mac.Verify the workspace structure:
ws_linux/ ├── compose.yml ├── Dockerfile └── src/ ├── package1/ └── package2/ ws_mac/ ├── compose.yml ├── Dockerfile └── src/ ├── package1/ └── package2/Explore the workspace layout
compose.yml: Defines how Docker Compose builds and runs the ROS 2 container, including mounts, environment variables, and networking settings.Dockerfile: Builds the ROS 2 development image. It uses an official ROS 2 base image, creates a non-root development user, and installs required system and ROS 2 dependencies.src: Contains all ROS 2 packages. This directory is mounted into the container as the active workspace.
Open and build the container
Execute the following commands to build and start the container:
For Linux:
$ cd ws_linux $ docker compose up -d $ docker compose exec ros2 /bin/bashFor macOS:
$ cd ws_mac $ docker compose up -d $ docker compose exec ros2 /bin/bashThis command builds the Docker image defined in your
Dockerfileand starts the container in the background.NoteBuilding the image may take several minutes during the first run as the CLI pulls the base ROS 2 image and installs required dependencies. Subsequent starts will be significantly faster.
Once the container is running, execute commands inside it using
exec:$ docker compose exec ros2 /bin/bashInside the container terminal, verify the environment:
$ echo $ROS_VERSION
$ which colcon
All commands should execute successfully inside the container.
Switch ROS 2 distributions
Update the base image in your Dockerfile, changing from humble to another distribution like rolling, jazzy, or iron.
Summary
In this section, you learned how to create a structured workspace, write a Dockerfile with development tools, and configure a Docker Compose setup. Your ROS 2 development environment is now ready with a consistent, reproducible setup across any machine.
Next steps
In the next section, you'll run a complete end-to-end example with Turtlesim.