https://github.com/rewire-run/docker
Docker images for Rewire — a drop-in ROS 2 bridge for Rerun
https://github.com/rewire-run/docker
docker docker-compose rerun-sdk rewire
Last synced: about 12 hours ago
JSON representation
Docker images for Rewire — a drop-in ROS 2 bridge for Rerun
- Host: GitHub
- URL: https://github.com/rewire-run/docker
- Owner: rewire-run
- Created: 2026-03-19T22:39:21.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-06-07T21:39:41.000Z (28 days ago)
- Last Synced: 2026-06-07T23:21:13.256Z (28 days ago)
- Topics: docker, docker-compose, rerun-sdk, rewire
- Language: Dockerfile
- Homepage: https://rewire.run
- Size: 26.4 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rewire-docker
Docker images for [Rewire](https://github.com/rewire-run/rewire) — a drop-in ROS 2 bridge for
[Rerun](https://rerun.io).
Try rewire without installing anything on your host. Each image includes ROS 2, rewire, zenohd,
and zenoh-bridge-ros2dds.
## Images
| Tag | ROS 2 | Architecture |
|-----|-------|-------------|
| `rewirerun/rewire:humble` | Humble | amd64, arm64 |
| `rewirerun/rewire:jazzy` | Jazzy | amd64, arm64 |
## Quick Start
```bash
docker pull rewirerun/rewire:humble
docker run --rm rewirerun/rewire:humble rewire --version
docker run --rm rewirerun/rewire:humble rewire types
```
## Docker Compose
Three networking scenarios are available via profiles:
```bash
docker compose --profile dds up # DDS multicast (default ROS 2)
docker compose --profile zenoh up # Full Zenoh (rmw_zenoh_cpp + router)
docker compose --profile zenoh-bridge up # DDS nodes + zenoh-bridge-ros2dds
```
Each profile starts a talker node and rewire, saving a recording to `./data/recording.rrd`.
## Running with Your Own Nodes
Start a ROS 2 node inside the container:
```bash
docker run --rm --network host rewirerun/rewire:humble \
ros2 run demo_nodes_cpp talker
```
In another terminal, bridge to Rerun:
```bash
docker run --rm --network host rewirerun/rewire:humble \
rewire record --all
```
## Save a Recording
```bash
docker run --rm --network host -v $(pwd)/data:/data rewirerun/rewire:humble \
rewire record --all --save /data/recording.rrd
```
## X11 Forwarding (Linux)
```bash
xhost +local:docker
docker run --rm --network host \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
rewirerun/rewire:humble rewire record --all
```
## Interactive Shell
```bash
docker run --rm -it --network host rewirerun/rewire:humble bash
```
ROS 2 is already sourced. Run any ROS 2 or rewire command directly.
## What's Inside
| Component | Source | Purpose |
|-----------|--------|---------|
| ROS 2 Humble/Jazzy | OSRF apt | Run nodes, replay bags |
| rewire | [GitHub Releases](https://github.com/rewire-run/rewire/releases) | Bridge ROS 2 topics to Rerun |
| zenohd | conda-forge via pixi | Zenoh router |
| zenoh-bridge-ros2dds | [Eclipse Zenoh](https://github.com/eclipse-zenoh/zenoh-plugin-ros2dds) | DDS ↔ Zenoh bridge |
| demo_nodes_cpp | OSRF apt | Example talker/listener |
| tf2_ros | OSRF apt | TF transform broadcasting |
| rmw_cyclonedds_cpp | OSRF apt | CycloneDDS RMW |
| rmw_fastrtps_cpp | OSRF apt | FastDDS RMW |
| rmw_zenoh_cpp | OSRF apt | Zenoh RMW |
## End-to-End Test
Verify everything works in one command:
```bash
docker run --rm rewirerun/rewire:humble bash -c '
ros2 run demo_nodes_cpp talker &
sleep 3
timeout 10 rewire record --all --save /tmp/test.rrd 2>&1
kill %1 2>/dev/null
SIZE=$(stat -c%s /tmp/test.rrd 2>/dev/null || echo 0)
if [ "$SIZE" -gt 100 ]; then
echo "PASS: recording is $SIZE bytes"
else
echo "FAIL: recording too small or missing"
exit 1
fi
'
```
## Build Locally
```bash
docker build -t rewire:humble .
docker build --build-arg ROS_DISTRO=jazzy -t rewire:jazzy .
```
### Build Arguments
| Argument | Default | Description |
|----------|---------|-------------|
| `ROS_DISTRO` | `humble` | ROS 2 distribution |
| `REWIRE_VERSION` | `0.3.1` | Rewire release version |
| `ZENOH_BRIDGE_VERSION` | `1.8.0` | zenoh-bridge-ros2dds version |