docker-ros2-desktop-vnc

August 7, 2026 · View on GitHub

Dockerfiles to provide HTML5 VNC interface to access Ubuntu Desktop + ROS2, based on AtsushiSaito/docker-ubuntu-sweb

ROS 1 version: https://github.com/Tiryoh/docker-ros-desktop-vnc

animation

There are official ROS 2 Docker images provided by Open Robotics.
https://github.com/osrf/docker_images/blob/master/README.md#official-library

このツールの詳細については以下の記事で紹介しています。
The details of these tools are written in Japanese on this page.
https://memoteki.net/archives/2955

DistroCI
HumbleHumble
IronIron
JazzyJazzy
LyricalLyrical
RollingRolling
RegistryPulls (all time)Pulls / weekPulls / month
Docker Hub
(tiryoh/ros2-desktop-vnc)
Docker Hub pullsDocker Hub pulls per weekDocker Hub pulls per month
GHCR
(ghcr.io/tiryoh/ros2-desktop-vnc)
GHCR downloadsGHCR downloads per weekGHCR downloads per month

Quick Start

Run the docker container and access with port 6080.
Change the shm-size value depending on the situation.

docker run -p 6080:80 --shm-size=512m ghcr.io/tiryoh/ros2-desktop-vnc:lyrical

Browse http://127.0.0.1:6080/.

Troubleshooting GUI applications

Some GUI applications may not work correctly when their system calls are blocked by Docker's default seccomp profile. Reported symptoms include Gazebo displaying a blank window and VSCodium failing to launch. This may also occur with Docker Desktop on macOS.

If you encounter these symptoms, retry with the seccomp profile disabled:

docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m ghcr.io/tiryoh/ros2-desktop-vnc:lyrical

Warning

seccomp=unconfined disables Docker's default system call filtering and reduces container isolation. Update Docker Engine or Docker Desktop first, and use this workaround only when necessary with a trusted image.

This workaround was originally introduced for an incompatibility between newer glibc in the container and older Docker seccomp implementations (#56), and was later required to resolve GUI blackout issues (#94).

default desktop

Build

To build Docker image from this Dockerfile, run the following command.

  • humble
# using "docker build"
cd humble && docker build -t tiryoh/ros2-desktop-vnc:humble .
# using "docker buildx" (amd64)
cd humble && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:humble-amd64 .
# using "docker buildx" (arm64)
cd humble && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:humble-arm64 .
  • iron
# using "docker build"
cd iron && docker build -t tiryoh/ros2-desktop-vnc:iron .
# using "docker buildx" (amd64)
cd iron && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:iron-amd64 .
# using "docker buildx" (arm64)
cd iron && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:iron-arm64 .
  • jazzy
# using "docker build"
cd jazzy && docker build -t tiryoh/ros2-desktop-vnc:jazzy .
# using "docker buildx" (amd64)
cd jazzy && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:jazzy-amd64 .
# using "docker buildx" (arm64)
cd jazzy && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:jazzy-arm64 .
  • lyrical
# using "docker build"
cd lyrical && docker build -t tiryoh/ros2-desktop-vnc:lyrical .
# using "docker buildx" (amd64)
cd lyrical && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:lyrical-amd64 .
# using "docker buildx" (arm64)
cd lyrical && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:lyrical-arm64 .
  • rolling
# using "docker build"
cd rolling && docker build -t tiryoh/ros2-desktop-vnc:rolling .
# using "docker buildx" (amd64)
cd rolling && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:rolling-amd64 .
# using "docker buildx" (arm64)
cd rolling && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:rolling-arm64 .
Deprecated distros (dashing, eloquent, foxy, galactic)
  • dashing (deprecated)
cd dashing && docker build -t tiryoh/ros2-desktop-vnc:dashing .
  • eloquent (deprecated)
cd eloquent && docker build -t tiryoh/ros2-desktop-vnc:eloquent .
  • foxy (deprecated)
cd foxy && docker build -t tiryoh/ros2-desktop-vnc:foxy .
  • galactic (deprecated)
cd galactic && docker build -t tiryoh/ros2-desktop-vnc:galactic .

Docker tags on hub.docker.com

Deprecated tags (dashing, eloquent, galactic)

Docker tags and build logs are listed on this page.
https://github.com/Tiryoh/docker-ros2-desktop-vnc/wiki

License

This repository is released under the Apache License 2.0, see LICENSE.
Unless attributed otherwise, everything in this repository is under the Apache License 2.0.

Copyright 2020-2026 Tiryoh <tiryoh@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Acknowledgements

Star History

Star History Chart