4 ms·
Funny that this came up — shameless plug: I've actually been working on a new Linux+Docker+Kubernetes solution for macOS recently! Already added quite a few imp
by kdrag0n 4y ago
Funny that this came up — shameless plug: I've actually been working on a new Linux+Docker+Kubernetes solution for macOS recently! Already added quite a few improvements over existing apps including Docker Desktop, Rancher, Colima, etc:
- Fast networking: 30 Gbps! vs. 150 Mbps with Docker VPNKit. Full VPN compatibility, IPv6, ping, ICMP and UDP traceroute, and half-open TCP connections.
- Bidirectional filesystem sharing: fast VirtioFS to access macOS from Linux, but also a mount to access the Linux filesystem from macOS. This setup can help with performance: for example, you could store code in Linux and edit it from macOS with VS Code (which can take the performance hit of sharing), so the container runs with native FS speed.
- Not limited to Docker or Kubernetes. You can run multiple full Linux distros as system containers (like WSL) so they share resources.
- Fast x86 emulation with Rosetta
- Much lower background CPU usage. Only ~0.05% CPU usage and 2-5 idle wakeups per second — less than most apps, while Docker wakes up ~120 times per second. Made possible with low-level kernel optimizations. Also, no Electron!
- Better solutions to other problems that can occur on macOS: clock drift is corrected monotonically, dynamic disk size, and more I'm working on now. Will look into memory usage too, although I can't guarantee a good fix for that.
- No root needed.
Planning to release this as a paid app in January. Not OSS, but I think the value proposition is pretty good and there will be a free trial. Not sure about pricing yet.
If anyone is interested, drop me an email (see bio) and I'll let you know when this is ready for testing :)
Also, feel free to ask questions here or let me know if there are other warts you'd like to see fixed.
- maccard 4y agoWhat are the tradeoffs?
- jitl 4y agoIt cost money sounds like the big one
- kdrag0n 4y agoThat's fair, but I think the value proposition is there for some :) I'm honestly not sure how pricing and licensing will work yet, but there will be some way to try it for free. Maybe something like Docker Desktop: free for personal use, license required for companies? That seems like a risky bet as an indie dev. There's also the whole question of one-time purchases vs. subscriptions. Subscriptions seem like the optimal model for this, so I'm not sure how to accommodate people who just don't like them. Would love to hear if you have any thoughts on how it could be done to reach as many users as possible.
- judge2020 4y ago> Maybe something like Docker Desktop: free for personal use, license required for companies? That seems like a risky bet as an indie dev. That's how it works currently.
- dtgriscom 4y agoYes, but I'm guessing kdragOn's legal budget is a whole lot smaller than Docker, Inc's, so the perceived risk of stealing the product would be a whole lot smaller.
- zenlikethat 4y agoMost businesses are honest, plus once you get to a certain size, it's all about CYA, so sure, some people might plunder it, but if you provide something a lot of people want, you could make plenty of money from the legitimates or people afraid of getting sued at some point. Then once the business is viable, the legal budget will be bigger...
- dtgriscom 4y ago> There's also the whole question of one-time purchases vs. subscriptions. Subscriptions seem like the optimal model for this, so I'm not sure how to accommodate people who just don't like them. My company is just large enough to require Docker Desktop licensing, and a per-seat continuous drip is too much for us. So, if you're looking to differentiate, having a buy-out option that gives permanent access to at least a range of versions would be big.
- i386 4y agoEven after building and selling developer tools for a decade, it always surprises and enrages me to see how miserly developers are.
- wkat4242 4y agoIt's also our employers. They don't like to spend money on dev tools because the suits don't see the benefit. There's no glossy Gartner magic quadrant BS for every niche development usecase so they think they're throwing money into the fire.
- YetAnotherNick 4y agoIf you think you get more productive with $10/month or something that most dev tools cost, why don’t you buy it on your own. After all even if it increases your salary hike by 1%, it will be worth it. I have seen designers buying Adobe tools which cost much more than dev tools, and their salary is on average lower.
- wkat4242 4y agoI don't know where you work but in our place using tools without internal approval or certification is really frowned upon. And in the case of this particular product we were talking about, it's really an infrastructure thing. You can't implement this on your own because then your colleagues' work won't connect to yours anymore. But also, the company should just supply the tools.
- lioeters 4y ago> glossy Gartner magic quadrant BS The phrase is gold. I understand from this that companies which provide tools and infrastructure for professional developers must not only attract the devs themselves, but also (and maybe more importantly) market/advertise and sell to the "suits", their managers and employers. Not sure if that's what you intended, but I'm now seeing the value of glossy Gartner magic quadrant BS, and thinking how to apply it in my own projects.
- brailsafe 4y agoAlso seems like they put in a shit ton of work
- kdrag0n 4y agoIn general, I don't expect anything to be worse than existing solutions, but not everything will be better. Enabling Rosetta can have a minor performance hit on memory-intensive workloads in the VM (not only x86 ones) because of TSO memory ordering, so it'll be optional. Hypervisor.framework doesn't have an API for third-party VMMs to set this and doesn't seem to let the VM modify ACTLR_EL1 either, so unless I can find a private API for it, I'm stuck with Virtualization.framework's limitation of Rosetta being either on or off for the entire VM at boot time. Memory usage is probably the biggest uncertainty right now. It should be at least slightly better, but I'm not sure if I can improve it much more due to Virtualization.framework limitations. Still looking into it. Networking is implemented with my custom userspace proxy for VPN compatibility. Servers are forwarded to localhost automatically, but you can't connect to the VM by IP because the network doesn't exist from the host's perspective. I've ran into too many issues with Apple's NAT setup and host-only networking is a private API, so this is postponed for now. Should be able to do better with root. Graphics won't be supported at launch, but I could look into it later if there's interest. Not sure how feasible acceleration will be if I can't find a way around having to use Virtualization.framework. Let me know if there's anything specific that I missed!
- rickette 4y agoBiggest question: is it backwards compatible with Docker? Docker CLI and docker-compose is used in tons of scripts. To have any change of this being adopted in a team setting it needs to be a drop in replacement.
- kdrag0n 4y agoYes, Docker CLI will be configured to talk to the VM.
- llIIllIIllIIl 4y agoIs there any way to join the waitlist for the software?
- kdrag0n 4y agoNo formal waitlist yet, but drop me an email (see bio) and I'll let you know when there is!
- paolomainardi 4y agoBlog post author here, cannot wait to see the solution out in the wild, it will be open-source ? Can you let me try it ?
- kdrag0n 4y agoIt won't be open-source, sorry. > Planning to release this as a paid app in January. Not OSS, but I think the value proposition is pretty good and there will be a free trial. Not sure about pricing yet. > If anyone is interested, drop me an email (see bio) and I'll let you know when this is ready for testing :)
- viraptor 4y agoDocker VPNKit, fast VirtioFS, Much lower background CPU usage Are there some new Linux drivers involved, or is this "just" a better tuned VM?
- kdrag0n 4y agoNo new drivers, but I did make some changes to the Linux kernel. It's mostly a better tuned VM and services on both sides, e.g. a custom fast networking stack in place of Docker's VPNKit. (Also, by "fast VirtioFS", I meant the same VirtioFS implementation tested in the article because it's faster than other solutions — sorry if it wasn't clear.)