You can use a container such as a desktop.
This project is based from this git (Apache 2.0) https://github.com/ConSol/docker-headless-vnc-container
startup.sh sciprt is based from this git (Apache 2.0) https://github.com/fcwu/docker-ubuntu-vnc-desktop
code-server is installed from this git (MIT) https://github.com/cdr/code-server.git
And I add some custom feature for startup.sh script (for uid, gid and vscode run)
Just run build script. ./docker_build.sh
and do run! ./docker_run.sh