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
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
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/.
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:lyricalWarning
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).
To build Docker image from this Dockerfile, run the following command.
- 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 .- 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 .deprecateddashingwhich is based ondashing/Dockerfiledeprecatedeloquentwhich is based oneloquent/Dockerfilefoxywhich is based onfoxy/Dockerfiledeprecatedgalacticwhich is based ongalactic/Dockerfilehumble,latestwhich is based onhumble/Dockerfileironwhich is based oniron/Dockerfilejazzywhich is based onjazzy/Dockerfilelyricalwhich is based onlyrical/Dockerfilerollingwhich is based onrolling/Dockerfile
Docker tags and build logs are listed on this page.
https://github.com/Tiryoh/docker-ros2-desktop-vnc/wiki
- https://github.com/atinfinity/nvidia-egl-desktop-ros2
- Dockerfile to use ROS 2 on Xfce Desktop container with NVIDIA GPU support via VNC/Selkies(Full desktop streaming with WebRTC)
- https://github.com/fcwu/docker-ubuntu-vnc-desktop
- Dockerfile to access Ubuntu Xfce/LXDE/LxQT desktop environment via web VNC interface
- https://github.com/AtsushiSaito/docker-ubuntu-sweb
- Dockerfile to access Ubuntu MATE desktop environment via web VNC interface
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 <[email protected]>
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.
- This Dockerfile is based on AtsushiSaito/docker-ubuntu-sweb, licensed under the Apache License 2.0.
- This Dockerfile is based on fcwu/ubuntu-desktop-lxde-vnc, licensed under the Apache License 2.0.

