DEV Community

Discussion on: Full Desktop in Docker

Collapse
 
manishfoodtechs profile image
manish srivastava • Edited

1. What's the point to use docker for GUI OS ?

Docker is not meant for running complete desktops but running apps. The closet container like VM machine is LXD. If you had visited my above-said article (docker in desi language) you would be able to spin a desktop in lxd container. Read this to know difference between Metal Server, VPS, Containers, Hypervisor -1 & Hypervisor -2 types

2.Why not just use virtualbox what could give us 100% (or close to that) desktop experience and functionality?

Suppose , We have to spin 25 Desktops from 16 MB RAM, 21TB HDD Host with each client desktop with guaranteed 2GB RAM.
(1) Virtual Box doesn't do Resource Pooling (of most costly resources like RAM, cores) among clients VMs. This means you can have only 7 client PC running simultaneously ( 2 X 7 GB = 14 GB and leaving 2 GB for the host).
(2) Networking is an issue with Virtual Box. This is why we don't use Virtual Box for Hosting on the server. The Below article may help you :

Further Reading...

The Story of cloud Brothers.

Must Read: Part 1 and Part-2 and Part-3

Collapse
 
huncyrus profile image
huncyrus

Thank you, but I am quite aware of the technical debt/requirement for such a project (I worked with companies what used slim/light clients where a central machine held the data and computation power and everything was synced).

More like I was curious of the use case.

Thread Thread
 
manishfoodtechs profile image
manish srivastava

Use cases
The list grows pretty much as you imagination allows. But a few examples include:

  • Realistic distro hopping. Try a new distribution or desktop environment before you make it your daily driver.
  • Evaluate the real performance instead of hoping that a native installation would be smoother.
  • Full portability. Copy your session’s data to a brand new computer, rebuild the Docker image and continue to work as if nothing ever happened.
    • Give your developers a reference workstation Dockerfile that they can still customize. Avoid the “works on my machine” problem.
    • Speed up the landing of new developers with an already functional toolkit.
    • Post your session’s Dockerfile on your StackOverflow question or GitHub issue. Let others reproduce the exact same environment you have when you encounter that nasty error.
  • Deprecation proof development environments. Your legacy React Native or Cordova setup is carved in stone. If an SDK upgrade breaks a project, nothing else will be affected. Rerun your stable image and npm install will keep working as usual.
  • Post your session’s Dockerfile on a public repo. Let others clone it, fork it and make it even cooler.
  • Evaluate bloated/unsafe software on a clone of your workstation and drop the changes when you are done experimenting.
  • Upgrade and downgrade at will, without the risk of losing any local data.
  • Docker build will never interact with any session, even if it’s running. -Replace your all-in-one bloated computer with minimal isolated systems that you can use on demand. One for your sysadmin work, one for your side projects, one for gaming, one for anonymous browsing, etc.
  • Forget about multiple SSH key management by having a different session for each project, with its corresponding key files and credentials.
  • Cybercafes, where a Linux computer spins up a fresh disposable desktop when you pay for it and terminates it when you are done.
  • Record a screencast of that upcoming Gnome/KDE release and transfer the video file to your main system right away. No VirtualBox Guest Additions needed.
  • If you write extensions for KDE, Gnome, etc., you can publish a Dockerfile to let people run sessions with them preinstalled.

You name it. The more you use it, the more you realize the enormous potential it has.

Above is abstract from :

Further Read : x11docker and dx-11 dev.to/brickpop/my-dream-come-true...

This link already mentioned in Article.