19 ms·
An Overview of Docker Desktop Alternatives
- jitl 5y agoI don’t want any kubernetes, though. I just want a VM (or similar) with a Docker in it, that’s simple enough for me to easily set up for my whole company with minimal scripting, and requires zero hand holding for continued support from me.
- deleted 5y ago[deleted]
- zekrioca 5y agoLXD/LXC. It can run Docker containers inside LXC containers, and it also supports clustering.
- lvncelot 5y agoI think if you're able to run LXC containers, you don't need a virtualization-based approach to run Docker containers. Iirc Docker Desktop isn't even available for Linux because of that.
- zekrioca 5y agoTrue, and I agree. However parent’s requirements mentioned Docker.
- flemhans 5y agoJust note that if you run ZFS, it's difficult because overlay2 doesn't work, AUFS is deprecated, and ZFS nesting is not supported. It will fallback to VFS which is very slow.
- quietbritishjim 5y ago> I just want a VM (or similar) Especially something like WSL2, which Docker Desktop for Windows uses in the latest releases. I know that is a VM (or similar) but the way it uses memory on demand, rather than reserving a huge chunk of your memory up front, makes a huge difference from a typical VM experience.
- charwalker 5y agoVM tools have allowed this sort of RAM management for years.
- quietbritishjim 5y agoThat's unhelpfully dismissive. It's not how VirtualBox (with guest additions) or HyperV seem to work in the default configuration, so it's not trivial to do. Could you explain how to get this to work on Windows? What virtualisation software would you suggest? (And can it nest in Hyper-V?)
- mdoms 5y agoSounds like you're getting a lot of value from Docker Desktop, which does exactly that.
- miked85 5y agoNothing mentioned here is actually an alternative for Docker Desktop. The article is very k8s focused, which is really just a feature that was added to Docker Desktop.
- rckrd 5y agoMinikube was initially based on docker-machine. It’s the closest alternative to having just Docker on macOS or Windows
- miked85 5y agoYou can't just have Docker on macOS or Windows though. There has to be an underlying VM, which Docker Desktop hides the details of.
- simonkagedal 5y agoCould you explain what Minikube brings, if you don't need Kubernetes, beyond setting up up docker-machine and virtualbox with something like this? https://apple.stackexchange.com/questions/373888/how-do-i-start-the-docker-daemon-on-macos/373914#373914 https://apple.stackexchange.com/questions/373888/how-do-i-st... I'd love a maintained, packaged solution, but it looks to me that I still have some configuration to do with minikube to set up a virutalization driver etc..?
- steviedotboston 5y agoAgreed. I want a .app file for macOS that does everything Docker Desktop does, without the bloat.
- alexruf 5y ago> Agreed. I want a .app file for macOS that does everything Docker Desktop does, without the bloat. Everything Docker Desktop does, without the bloat of the Desktop app ;)
- mumblemumble 5y agoI think that, in this case, "without the bloat" is not a very meaningful ask. Most of the size of the app bundle is the image for the virtual machine it uses to host Docker. By comparison, the GUI bits are quite small.
- ethernet 5y agoThe article is wrong.... > microk8s – a Snap distribution of Kubernetes. Only for Linux. Not sure why you would use it. Minikube has been far more battle-tested and is multi-platform, and doesn't require lock-in to a pseudo-package manager. microk8s is available on macos, and works well from my limited testing of it https://microk8s.io/ https://microk8s.io/
- rckrd 5y agoIt requires users to install multi pass. You can run any of these tools in a virtual machine
- rb12345 5y agoI'd say the main argument for using microk8s over minikube is that Canonical supports it, assuming that's a relevant concern. The issue for both microk8s and minikube is how to actually build the containers in the first place. With Docker Desktop or the Docker Engine on Linux, you can use "docker build" to build them. Without that, you need to install a separate tool to do the build (buildah/podman/generating tarballs by hand?) and then push it into a suitable registry or import it into Kubernetes.
- merusso 5y agoThe author doesn't point this out well, but Minikube allows you to pretty easily expose a remote Docker host to be used for `docker build` and other Docker API commands. The command is `minikube docker-env`, which defines env vars that point the `docker` CLI client at Minikube's Docker API.
- afbjorklund 5y agominikube now includes a command called "minikube image build", which builds the images for your Kubernetes cluster - for any container runtime, including docker - but also containerd
- zoobab 5y agoPoor users of Bill Gates OS.
- deleted 5y ago[deleted]
- benbristow 5y agoIt's okay. We can just install WSL2 and the free bit of Docker works as if it were running on Linux.
- bostonsre 5y agoYea, I have docker desktop installed, but I can't remember the last time I've used it. I've only used docker inside of wsl2.
- 1MachineElf 5y agoYeah, unless you get the 0x80370102 error when running WSL2 containers. I wasn't able to make any progress at all on my employer's Windows workstation with Docker Desktop until the Windows 10 20H2 update fixed it. And now all of that's in limbo while management decides if jumping through procurement hoops for Docker Desktop Business subscription will be worth it for them.
- yjftsjthsd-h 5y agoexactly as well, in fact:)
- flurie 5y agoI feel like we need an update of that Jamie Zawinski adage: > Some people, when confronted with a problem, think "I know, I'll use kubernetes." Now they have two problems.
- dgellow 5y agonow they have a cluster of problems
- fulafel 5y agoHighly available cluster of problems that autoscales to your stomach for complexity?
- yuppie_scum 5y agoCareful not to conflate docker and K8s.
- rad_gruchalski 5y agoSomeone should tell this to the author of the posted article!
- 0xdeadbeefbabe 5y agoNow they have N problems, and with just the right yaml...
- dgellow 5y agoToo much yaml? No problem, let’s generate manifests via Helm or jsonnet! Glad I solved your N problems! Of course keep in mind you now have to deal with NM issues :)
- smulc 5y agoThe article doesn't mention k3d (https://k3d.io/ https://k3d.io/) which is a variant of k3s that runs in docker (rather than a VM) - very nice for k8s dev/test on developer workstations. It integrates very nicely with https://tilt.dev/ https://tilt.dev/ also (another very useful tool for k8s related dev/test).
- rckrd 5y agoAuthor here. Tilt is great. After minikube I wrote skaffold, which is a closer alternative to docker compose for Kubernetes with file watching and automated rebuilds and syncs. https://skaffold.dev https://skaffold.dev
- 8bitbuddhist 5y agoThere's also Kind (Kubernetes in Docker) which accomplishes the same thing using upstream Kubernetes. https://kind.sigs.k8s.io/ https://kind.sigs.k8s.io/
- merusso 5y agoI believe the point of this article was to point out alternatives to Docker Desktop -- that is, Docker solutions that run on Windows and Mac hosts. The point wasn't to highlight alternative k8s distributions.
- deleted 5y ago[deleted]
- shci 5y agoI wrote an installer that sets up a VirtualBox VM, installs docker in it and sets everything up with a single command. It has a few drawbacks but might be good enough for a lot of use cases: https://github.com/dziemba/mobymac https://github.com/dziemba/mobymac
- martijnvds 5y agoWe used to do similar things with Vagrant
- rckrd 5y agoThis is essentially what minikube does with the virtual box driver
- jrm4 5y agoLove it. Always thought "Docker" was precisely the sort of thing that was destined to be a great and useful tool and a terrible kabillion dollar business.
- andrewstuart2 5y agoIt's the kind of thing that was a really killer way of bringing a half dozen open technologies into one easy-to-use tool, and despite the general simplicity of it, there wasn't much reason for quite a while to try to build anything better. Not that it wouldn't have been pretty easy to do, but if you did, most people would have said "but why?" And now Docker, Inc. has gone on to answer the "why" for us.
- elsonrodriguez 5y agoThe best revenue stream available to Docker was the numerous, generous buyout offers they had in the early days.
- jrm4 5y agoDid they? Like Oracle or Microsoft or something? I could see that.
- mfer 5y agoFor those interested, there is Rancher Desktop[1]. It's an open source desktop app for K8s and containers. Works on Mac (Intel) and Windows. Apple Silicon and Linux Desktop support are both planned. [1] https://rancherdesktop.io https://rancherdesktop.io Disclosure, I work on Rancher Desktop.
- atombender 5y agoI tried running Kubernetes on my MacBook Pro, and it was just too resource-hungry — Kubernetes relies on a lot of polling, and it was constantly consuming about half a core. (I tried out both Minikube and Kind.) Does Rancher strip down Kubernetes to make it less resource-hungry and more friendly to individual developer machines?
- mfer 5y agoRancher Desktop uses k3s[1] which is a distro of Kubernetes designed for light weight environments. I run is on a fairly new MBP and a 7 year old MBP without an issue. I also run it on a 9 year old server with low resource usage. While Kubernetes is present we want those components to use the fewest resources they need to. On Mac, all of this runs in a VM and you can control the resources given to the VM. [1] https://k3s.io/ https://k3s.io/
- sngz 5y agowill it allow me to continue to run docker commands in the macos command line as usual? I don't want to go back and update all my preexisting scripts.
- dgellow 5y agoI personally find it quite sad to see reactions on HN regarding the introduction of Docker Desktop subscription model. We all benefit from a well supported Docker company, it’s good to see they are trying to look for a sustainable model. If your team is using their tools daily since years, and you decide to change to a different one just to avoid a small license fee, that feels hypocritical. If the tool worked for you when it was free, it still works when you have to pay a small license fee and brings the same value. Companies paying for developer tooling is good for the ecosystem.
- rckrd 5y agoAuthor here. I agree. Even as a past maintainer of minikube, I still am a frequent user of Docker Desktop and would gladly pay for it
- dgellow 5y agoBtw, thanks for the article, it’s an interesting read, I like your writing style
- ngauje 5y agoIn big Companies, the usage of VPN solution is pretty common. Especially since COVID with the rise of remote workers. One big feature Docker Desktop nailed is the VPN friendlyest of the solution! They developped VPNKit to solve VPN issues, and honestly it works very well. None on the alternatives provide such feature!
- detaro 5y agoWhat does it do?
- ngauje 5y agoIt links docker's network through a linux/windows pipe to a process on your windows/mac host. So containers network packets don't get out from a virtual network adapter (that can be filtered out) but from a vpnkit.exe process on windows. Using this, you are more compliant with strict corporate security rules and are less likely to be blocked by your VPN client, proxy firewall etc...
- saghul 5y agoIs there a Docker Desktop for Linux? I don't see one here https://www.docker.com/products/docker-desktop https://www.docker.com/products/docker-desktop (the Linux link takes you to Docker Engine). The article presents "Docker Desktop Alternatives", then says "Minikube requires a VM. False" but it looks like on the platforms being compared here (macOS and Windows, since Docker Desktop is only available there) it does use a VM. Did I get this wrong?
- adolph 5y agoNo, not wrong. Any non-Linux system that runs a Linux container will need to run a Linux kernel for that container. This is most often done with a VM even if that VM is obfuscated behind an application like Docker Desktop. This is why WSL 1 is often not supported by such systems even through you can run an "Ubuntu" application within WSL 1. https://docs.microsoft.com/en-us/windows/wsl/compare-versions https://docs.microsoft.com/en-us/windows/wsl/compare-version...
- meatmanek 5y ago> Any non-Linux system that runs a Linux container will need to run a Linux kernel for that container. Well, actually... WSL 1, Illumos/SmartOS/OmniOS's LX-branded zones [1], and FreeBSD's Linux Jails [2] all work without a Linux kernel by translating syscalls. This is somewhat analogous to how Wine can run Windows programs without a Windows kernel. Last time I was paying attention to it, Joyent's Triton product provided a Docker API-compatible interface to run Docker containers on their SmartOS-based servers. Looks like that may still be around.[3] 1. https://wiki.smartos.org/lx-branded-zones/ 2. https://wiki.freebsd.org/Linuxulator 3. https://www.joyent.com/triton/compute
- adolph 5y agoThank you for the "well actually." I generally feel discomfort at blanket statements and often hedge things a bit. This often makes sentences longer and harder to read. This "well actually" did a great job of outlining the corner cases where syscall translation "works," and there aren't many. I'm glad I wasn't totally deluded.
- tunesmith 5y agoHow would I use Minikube to replace Docker Desktop if I don't want to use (or learn anything in depth) about Kubernetes? Like in the case where we just want to build images locally, optionally send to a docker registry, and use docker commands to run the docker containers?
- stefandesu 5y agoWould love to know this as well! I never use the GUI of Docker Desktop, I just need the docker and docker-compose commands on the command line (on macOS).
- Joeri 5y agoI found (but not yet tried) these instructions on how to set up minikube as a drop-in replacement for docker desktop on mac: https://gist.github.com/protosam/11800faea25a3f89af9ece4f11c72f1d https://gist.github.com/protosam/11800faea25a3f89af9ece4f11c...
- merusso 5y agoAssuming you've installed Minikube and separately downloaded the Docker CLI client, you start up Minikube, set up the Docker environment using `minikube docker-env`, and run `docker` commands as usual. This configures the Docker client to run against a "remote host", it does have some notable limitations. The `--publish` and `--volume` arguments don't work the same way, for instance.
- mumblemumble 5y agoI did an (admittedly quick) evaluation yesterday, and came away with the impression that migrating away from Docker over this would be penny wise and pound foolish. There are other options that have a lower sticker price. But Docker Desktop's price isn't exactly high, and we've already got a lot of investment in Docker, knowledge about Docker, and related infrastructure such as testcontainers. So, after factoring in that we are still a company and do have to pay developers for their time, I concluded that, big picture, just giving them some money is the vastly less expensive option.
- lnxg33k1 5y agoSuch an effort to let these 10mln+ enterprise save money, i wish there was no free (as in beer) software
- alpb 5y agoLima is also a solid alternative for macOS users. https://github.com/lima-vm/lima https://github.com/lima-vm/lima It runs containerd+nerdctl but I've heard it can also be set up to run Moby engine (docker). https://twitter.com/_AkihiroSuda_/status/1432906244860223493 https://twitter.com/_AkihiroSuda_/status/1432906244860223493
- wkirby 5y agoI’ve see no mention of dinghy (https://github.com/codekitchen/dinghy https://github.com/codekitchen/dinghy), which is what I used to roll before Docker for Mac really got up and running. I pulled it up yesterday and everything still works. For anyone who is interested in a Docker Desktop alternative but without the k8 overhead, there’s a head start here just waiting to be picked up and revitalized.
- sandGorgon 5y agoif the author is reading this, can you re-evaluate from a wsl2 standpoint ? Basically installing docker desktop gets you seamless docker working on the wsl2 commandline - which is basically a linux experience at minimal performance hit. far far better than any VM.
- richardwhiuk 5y agoOn WSL2 you can run the Docker from Ubuntu/RedHat/Upstream locally and not worry about Docker Desktop. As a bonus, you get a better version of Docker.
- jsmith45 5y agoThe docker daemon running in WSL2 is completely unmodified from the upstream source, and is in fact byte for byte identical with the official docker for Linux package binaries. So if you are getting a "better" version, it is by way of distro specific patches, or being able to run a marginally newer release than has been included in docker desktop yet. However docker desktop has done a lot of tricks to enable you to run docker containsers from two or more different WSL2 distros seamlessly, as well as managing them from the windows command prompt. You can have a container started from windows with a windows bind mount, alongside a container from ubuntu with an ubuntu bind mount, and a container from fedora with a fedora bind mount all connected to the same docker network, since they are all running on the same daemon. Out of curiosity, I partially reverse engineered what all they had done here, and it is a heck of a lot more involved then you expect. There is an awful lot of subtle things going on to help make things just work they way one would expect them to even in advanced scenarios like those. And I'm sure there is a lot more going on, as there was plenty I saw hints about but did not try to reverse engineer. Admittedly I'm not a fan of this new docker desktop licensing change, But I think people underestimate the amount of work Docker Inc has done to make docker desktop work well.
- sandGorgon 5y agoSo ultimately - what do u recommend ? cos i couldnt make cmdline docker work on wsl2 Ubuntu. Is Docker Desktop the only way out ?
- nullify88 5y agoI've uninstalled Docker Desktop and installed podman in WSL2. So far I haven't had a problem. Granted not everyone can do this if they have a dependency on the Docker ecosystem, but as someone who just used Docker desktop to run and build containers on the cli or via Ansible, podman is nearly a drop in replacement. As a bonus, theres no docker bridge IP conflict I need to worry about. Edit: Alternatively, this also looks comprehensive: https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9 https://dev.to/bowmanjd/install-docker-on-windows-wsl-withou...
- GordonS 5y agoCan you mount folders from the Windows host, or do you keep all your files in the WSL2 VM?
- nullify88 5y agoWSL2 can automount the Windows host in to the folder of your choosing. In my case its /mnt/c for the C:\. I often cross the filesystem boundary. Going the other way, WSL exposes a SMB share so you can browse the Linux filesystem. This would be via //wsl$
- GordonS 5y ago"Minikube is the officially supported way to run Kubernetes locally on macOS, Windows, or Linux. Furthermore, it is the only tool that is a drop-in replacement for Docker Desktop." Huh, I hadn't realised that Minikube was available on Windows! I use Docker Desktop on Windows, to make it easy to run Docker, Docker Compose, and Docker Swarm. Does Minikube support these things, or only Kubernetes? If it's the latter, then of course it's not a drop/in replacement for Docker Desktop.
- rckrd 5y agoIt exposes the Docker socket so you can use the docker client with it. That’s the recommended configuration anyways.
- gkfasdfasdf 5y agoIs there any special configuration required for this? I.e. if I install minikube on MacOS, and download the docker CLI binary separately, will the docker binary just find /var/run/docker.sock and work automatically?
- merusso 5y agoThere is special setup required. The docker daemon won't be running on /var/run/docker.sock, needs to point to a network port where the remote host is exposed (ex: tcp:///172.21.108.0:2376). Aside from starting the Kubernetes cluster, you need to run `eval $(minikube docker-env)` which sets up the environment variables like DOCKER_HOST to point the client at the remote host.
- kevwil 5y ago"kind, microk8s, or k3s are replacements for Docker Desktop. False. Minikube is the only drop-in replacement. The other tools require a Linux distribution, which makes them a non-starter on macOS or Windows." False, kind can run on top of Docker Desktop on Mac, it does not require Linux exclusively.
- NyxWulf 5y agoAs an overview of Docker Desktop alternatives, running on Docker Desktop makes it not an alternative. Your comment seems to have missed the point of the article.
- alexruf 5y agoPerhaps I have misunderstood something, but the Docker engine remains free and open source. What annoys me is that they treat Windows & macOS users differently than Linux users. Linux Desktop users this doesn't impact at all. I have never used the Docker Desktop application. But for me as macOS user Docker Desktop was the only way to run the Docker engine native (more or less, I think they use HyperKit under the hood) on my host system. Is there any alternative to run just the Docker engine on macOS just like Docker Desktop does? I don't want any Kubernetes on my Laptop. All I need is the Docker engine and the Docker CLI.
- yawaramin 5y agoDocker is essentially a wrapper for containerization tech that is native to Linux only (cgroups etc.). So no, there's no way to just run the engine directly on other OSs. Docker Desktop takes care of the dirty details of virtualizing a Linux layer on Mac and Windows so the engine can run there. And they want to charge larger companies for it. Which seems very reasonable to me.
- visualphoenix 5y agoFwiw, I switched to a docker-machine based deployment with vmware. https://gist.github.com/visualphoenix/1bfa6f05289902bf2858bc5357e7d971 https://gist.github.com/visualphoenix/1bfa6f05289902bf2858bc...
- rad_gruchalski 5y agoThe article completely misses the point. And this at the end: > In closing, I think that the outrage over Docker's decision is far overblown. If you're an enterprise using Docker Desktop at scale, then you should be paying for support. Sure. But Docker doesn’t want the enterprises to pay for “support”. They are turning something what not many people know how to viably and reliably replace into a paid product. The enterprises will essentially just have to “suck it up”. This rapid decision about the Docker Desktop makes me think what is Docker the company going to do about Linux? Start charging for compose? swarm? The realistic goal must surely be monetisation on Linux, not macOS or Windows…
- zoopster 5y agoI don’t see any mention of rancher desktop which is a drop in replacement, fully open alternative. It’s not feature complete but works quite well.
- merusso 5y agoThis article should do a better job of explaining how Minikube is a "drop-in replacement for Docker Desktop". After installing Minikube, you won't just be able to run `docker` commands (`docker build`, `docker run`, etc.) on the terminal like you would after installing Docker Desktop. You need to download the Docker client somewhere, need to configure this client to point to Minikube's remote host (`minikube docker-env` helps here), and some Docker commands won't work the same (--publish, --volume).
- afbjorklund 5y agoMinikube is more similar to Docker Toolbox, which is not too surprising - considering they are built on the same Docker Machine. Which Docker Inc. doesn't want to support anymore, saying that it was replaced with Docker Desktop and is now deprecated (since 2019).
- camasaki 5y agoI’d hate to contradict you but Minikube does indeed require a Linux distribution on Windows- it installs as a VM in Hyper-V.