Skip to content

Run gazebo ionic on docker

Dockerfile

Docker file

Run the image

xhost +local:docker

docker run --gpus all -it --rm \
--name ionic \
--hostname gz \
--user user \
--network host \
--env="QT_X11_NO_MITSHM=1"  \
--env="DISPLAY"  \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /dev/dri:/dev/dri \
-v /dev/nvidia0:/dev/nvidia0 \
-v /dev/nvidiactl:/dev/nvidiactl \
-v /dev/nvidia-modeset:/dev/nvidia-modeset \
gz:ionic

Use VSCode and docker

  • Using docker-compose
  • Using devcontainer to run the docker compose
1
2
3
4
5
6
7
├── .devcontainer
│   └── devcontainer.json
├── docker-compose.yaml
├── .gitignore
└── gz_tutorial
    └── worlds
        └── empty.world
docker-compose.yaml
services:
  gazebo:
    image: gz:harmonic
    network_mode: host
    user: user
    stdin_open: true
    tty: true
    hostname: gz
    environment:
      - DISPLAY=${DISPLAY}
      - QT_X11_NO_MITSHM=1
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=all
      - GZ_TRANSPORT_IP=gazebo
      - GZ_DISCOVERY_SERVER=gazebo
      - GZ_PARTITION=my_simulation
    volumes:
      - .:/workspace:cached
      - ./.gz:/home/user/.gz:cached
      - /tmp/.X11-unix:/tmp/.X11-unix:rw 
      - /dev/dri:/dev/dri 
      - /dev/nvidia0:/dev/nvidia0 
      - /dev/nvidiactl:/dev/nvidiactl 
      - /dev/nvidia-modeset:/dev/nvidia-modeset 
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]
.devcontainer/devcontainer.json
{
    "name": "gz_tutorial",
    "dockerComposeFile": "../docker-compose.yaml",
    "service": "gazebo",
    "shutdownAction": "stopCompose",
    "workspaceFolder": "/workspace",
    "remoteUser": "user",
    "customizations": {
      "vscode": {
        "extensions": [
            "ms-python.python",
            "ms-vscode.cpptools",
            "twxs.cmake",
            "redhat.vscode-xml",
            "redhat.vscode-yaml",
            "albert.tabout",
            "actboy168.tasks",
            "streetsidesoftware.code-spell-checker"
        ],
        "settings": {}
      }
    }
  }