A fun idea might be to combine something like this with Tailscale & their Mullvad add-on, so you get ephemeral browsing environments with VPN connectivity, could make it easy to test from various countries simultaneously on a single host.
Gluetun is the bomb. I run it in front of all of the *arrs as well as LSIO's webtop for quick access to a VPN (Mullvad). The nice thing is the operational containers don't have network access to the Internet if the Glutun container is down, so it's a nice failsafe mechanism to guarantee the VPN path.
Worth mentioning Jess Frazelle was running desktop applications in docker a while ago. Not a full desktop, but also quicker to rebuild individual apps.
I've been running stuff in LXC for ages (and before that, custom chroots). A while ago I made the switch to Wayland - and now started moving things over to podman, which has the added benefit of being able to share the stuff easily:
I use two different setups - on some systems I only run things like browsers in conatainers, on others I also run the desktop itself in a container. Not published yet are my helper scripts, that'll need some more cleaning up.
On Windows, doesn't this technically mean OP is running Linux inside a Linux VM inside Windows? From what I understand Docker is Linux tech and to use it anywhere else a (small) Linux VM is required. If true, I would just dispense with the extra layer and just run a Linux VM. Not to discourage experimentation though!
For one thing, Docker is not really "Linux inside Linux". It uses Linux kernel features to isolate the processes inside a container from those outside. But there is only one Linux kernel which is shared by both the container and its host (within the Linux VM, in this case).
For another, running Linux containers in a Linux VM on Windows is one (common) way that Docker can work. But it also supports running Windows containers on Windows, and in that case, the Windows kernel is shared just like in the Linux case. So Docker is not exactly "Linux tech".
I think GP is likely referring to Docker Desktop, which is probably the most common way to use Docker on Windows.
Running Linux containers using Docker Desktop has a small Linux VM in which the containers are run and then Docker does some mucking about to integrate that better with the Windows host OS.
I thought docker only supports windows as a host if you enable wsl, in which case you're running on hyper v and Linux kernel as part of wsl2, so absolutely Linux tech on a Linux vm on Windows... Am I wrong?
I desperately wish I could run docker properly (CLI) on the Mac rather than use docker desktop, and while we are making a dream list, can I just run Ubuntu on the Mac mini?
I develop my apps in the most possible native way I can: deb packages, apt repo, systemd, journald etc. however I would like to also be able to run it in docker/vm. Is there a good systemd-in-docker solution for this to basically not run anything differently and not have to maintain two sets of systems?
Have you looked at systemd-nspawn[0]? Its not docker so it wouldn't be useful for writing Dockerfiles but it is light containers that work beautifully with systemd.
Thanks, this looks awesome! Will play around on my CI/CD first to see if it's any good for the build-server to add trixie builds. Might use in prod deploys later.
Containers with systemd as an init process are considered first-class citizen by the Podman ecosystem (the base images are named accordingly: e.g, ubi10-init vs ubi10)
My current production systems are running Ubuntu 22.04, and there is no official images with systemd for them in Podman. So it does feel like second class citizen.
On another hand, if ubi’s work fine — that means there should be no technical limitation to keep Ubuntu working.
I’ll keep playing with Podman for now, but will switch to Incus if that will fail
You could use Nix to build the package and provide a nixos module and a docker image from the same derivation. Now you only have to manage three systems instead of two. /s
WSL doesn't have an X Server, it has a Wayland compositor. That said, yes, you can use that. You can even run a different compositor nested so you get one single window with a desktop if you want.
Ah wayland. Many things changed since the time I've been using Linux in my professional work. However does Wayland support connectivity? I.e. can you display Wayland session on another computer via TCP/UDP? If not then Wayland won't work with wsl2 which is basically a VM
Samsung DEX had a Linux desktop package in 2018. It was a lxd container based on Ubuntu 16.04. They developed it in collaboration with Canonical. Unfortunately they deprecated it shortly after, maybe already in 2018. The next Android update would remove it.
It worked but Android killed it mercilessly if it used too much memory or the rest of the system needed it.
Some current Android devices that have USB-C 3.1+ and support dp-alt-mode (USB-C to HDMI) will detect when an external display is connected and provide a full extended desktop. [0]
You can connect mouse, keyboard, and display to the Android device through an unpowered USB-C hub that offers the respective ports. Battery life depends on the make/model of Android device.
I have a Motorola phone and the experience is very nice.
>Although DisplayPort functionality was disabled at a hardware level on Google Pixel 7 and previous models, Mishaal Rahman discovered that it is only locked at a software level on the Google Pixel 8. It is possible to enable display output on a rooted Pixel 8 with the following shell command with adb.
It works perfectly with GrapheneOS as of Pixel 8 and newer.
I did a similar thing some years ago, when trying to hack my own cloud gaming setup by using AWS GPU Linux instances. While it worked the price per hour wasn't worth it compared to just buying a good GPU.
My idea was very similar, using TigerVNC and just launching Steam without a WM. Unfortunately I think I lost the code for it
https://blog.jessfraz.com/post/docker-containers-on-the-desk...https://github.com/jessfraz/dockerfiles
https://github.com/aard-fi/tumbleweed-images/tree/master/way...
I use two different setups - on some systems I only run things like browsers in conatainers, on others I also run the desktop itself in a container. Not published yet are my helper scripts, that'll need some more cleaning up.
For one thing, Docker is not really "Linux inside Linux". It uses Linux kernel features to isolate the processes inside a container from those outside. But there is only one Linux kernel which is shared by both the container and its host (within the Linux VM, in this case).
For another, running Linux containers in a Linux VM on Windows is one (common) way that Docker can work. But it also supports running Windows containers on Windows, and in that case, the Windows kernel is shared just like in the Linux case. So Docker is not exactly "Linux tech".
Running Linux containers using Docker Desktop has a small Linux VM in which the containers are run and then Docker does some mucking about to integrate that better with the Windows host OS.
I desperately wish I could run docker properly (CLI) on the Mac rather than use docker desktop, and while we are making a dream list, can I just run Ubuntu on the Mac mini?
[0] https://wiki.archlinux.org/title/Systemd-nspawn
On another hand, if ubi’s work fine — that means there should be no technical limitation to keep Ubuntu working.
I’ll keep playing with Podman for now, but will switch to Incus if that will fail
Build system packages and containers from those packages for a given target distro.
Behind the scenes it uses buildkit, so it's no extra stuff you need, just docker (or any buildkit daemon).
Seems very inefficient to have to render everything through the browser
Which has Xwayland support. You can still run X11 apps.
https://akik.kapsi.fi/rocky/
The desktop is accessed locally and not via a network connection and it's running under Xwayland.
It worked but Android killed it mercilessly if it used too much memory or the rest of the system needed it.
You can connect mouse, keyboard, and display to the Android device through an unpowered USB-C hub that offers the respective ports. Battery life depends on the make/model of Android device.
I have a Motorola phone and the experience is very nice.
[0] _ https://uperfect.com/blogs/wikimonitor/list-of-smartphones-w...
It works perfectly with GrapheneOS as of Pixel 8 and newer.
Kinda hope they revisit this idea in a near future again
https://www.androidauthority.com/android-16-linux-terminal-d...
My clients are a rpi 4 and an older ipad. Sometimes use an Android phone as well.Works really well.
On one hand, it made me chuckle a bit. On the other hand, it could be reasonable in many scenarios.
My idea was very similar, using TigerVNC and just launching Steam without a WM. Unfortunately I think I lost the code for it