37 comments

[ 5.7 ms ] story [ 62.3 ms ] thread
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?
You might be better served by Incus/LXD which run "Linux containers" (ie: a full distro including systemd, SSH etc) as opposed to OCI containers.
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
https://github.com/Azure/dalec

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).

(comment deleted)
What's the best way to forward the x-server over ssh?
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!
I run Arch under WSL2 and then in ~/.bashrc:

WINDOWS_IP=$(ip route | awk '/^default/ {print $3}')

DISPLAY="$WINDOWS_IP:0"

Now I can use the mighty mobaxterm from https://www.mobatek.net to just run whatever and pipe it back to Windows.

One caveat is that the $PATH gets polluted with space characters by 'Doze, so I have to do something like this for QGIS:

PATH=/usr/local/sbin:/usr/local/bin:/usr/bin qgis -n &

(comment deleted)
I run full-headed Puppeteer sessions in Docker, with VNC for debugging and observation. I keep the instances as light as I can, but I suspect I'm most of the way there toward a "full" desktop experience. Probably just need to add a more full-featured window manager (currently I use fluxbox)
Does anybody have a good writeup/tutorial on doing similar things with Wayland? From my limited knowledge that might be with RDP instead, but there hasn't been anything more distilled as far as I know?

I've also done xpra in docker before; that's always felt as hacky as it sounds though.

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.

I just carry around a pwnagotchi on a keychain, and use my iPad to access it to do Linux development work, including run a full raspian desktop, dev tools, etc.
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.
Sheesh. Just use LXC.
Can you not use the X11 server packaged with WSL as your display driver, and avoid piping this all into the web browser?

Seems very inefficient to have to render everything through the browser

I’ve done it for almost a decade now, to the point of packaging “stacks” inside Docker for specific tasks: https://github.com/rcarmo/azure-toolbox

These days I have a Docker container with Remmina that I use as a bastion (fronted by Cloudflare and Authelia for OIDC), but everything else is LXC with xrdp and hardware acceleration for both application rendering and desktop streaming (xorgxrdp-glamor is much, MUCH better than VNC).

I am, however, struggling to find a good way to stream Wayland desktops over RDP.

For me this opens the question of are there any good remote desktop solutions for multiuser systems around. Rustdesk is single user, TurboVNC works, but there can be lag.
You know, it's funny—I always hear people say they want to keep their Windows-only applications and run Linux alongside it, but I made the switch almost a decade ago and honestly can't say I'm worse off for it. And frankly, there's never been a better time to make that leap; the Linux desktop has finally hit its stride and become genuinely mature, with the polish and features one would expect from a modern operating system.

Apart from a handful of games, I haven't actually needed Windows for anything. So I'm curious—what Windows-only software is keeping you on it, OP?

We did this as way to break the 'are you human test captcha' a while back. Nothing nefarious, just a hacking problem we were doing back then.
I’ll just leave this here, thank me later:

https://docs.linuxserver.io/images/docker-webtop/

These images are top-notch, well documented, and have recently been refactored to use Selkies under the hood. Even with gamepad support, I’ve used these for running DOSbox, RetroArch, streaming video, and many other things.

There’s even a mature extensibility layer for using their images as a base layer to add services and apps.

Can’t speak highly enough of the linuxserver.io folks.

> Containers are not isolated Operating Systems: Docker containers share the host kernel. This is what makes them lightweight and great for single services. Whereas desktop environments expect system services like (systemd, logind, udev, DBus) and device access to be available. Containers don’t provide that by default.

I thought Docker images always run in a VM on non Linux systems, no? This guy is running Windows on host, right? Confusing

I recently learned about doing this because I was looking for a MATLAB container and it has one that provides full GUI experience.