4 ms·
> But we have software we need to ship in order to get users in order to drive subscriptions. Anything that doesn’t directly serve that goal is a complication.
by imiric 6y ago
> But we have software we need to ship in order to get users in order to drive subscriptions. Anything that doesn’t directly serve that goal is a complication.
I think you're only seeing Docker as a packaging format and missing the distribution aspect. There's a lot of value in telling users "My app is accessible with a single `docker run` command", that doesn't involve them downloading a standalone binary manually, placing it in their PATH, etc., and also works across platforms and operating systems. Or worse, having to setup the Go toolchain and compile it themselves, no matter how easy it is for a developer (and ignoring what can go wrong with Go modules).
Of course, then you open yourself up to all sorts of support questions related to Docker, but I still think it's a missed opportunity to not use it to make your software as widely and most easily accessible as possible.
- matsemann 6y agoGood point for services being installed. Especially when I'm just testing something I don't want to see a full page on how to get it up and running, or even care about the underlying tech. Just give me a docker oneliner. Doesn't have to be the standard way of distributing the app, but at least make a simple image for local testing / development. Tested RabbitMQ this weekend, and the getting started was soo easy.
- nicoburns 6y ago> and also works across platforms and operating systems As a mac user, I'm not sure I agree with this. Docker does technically work cross platform of course. But it's slow everywhere except for linux. I'd much rather have binary (or even better a `brew install`) than a docker image.
- j0ba 6y agoLol no. Docker is only slow on Mac. It works great on all other platforms.
- imiric 6y agoThat's true, unfortunately, volumes are especially problematic. Though I think it's gotten better over the years, and performance should be acceptable for most workflows. I'm not saying it should be the _only_ distribution option, and standalone binaries and other packages should be provided as well, but there's no reason for Docker to not be one of them.
- DanHulton 6y agoIt's a lot faster if you don't rely on the default volume mounting: https://nodewood.com/blog/how-to-speed-up-docker-on-macos/ https://nodewood.com/blog/how-to-speed-up-docker-on-macos/ Still not as fast as on Linux, but within 10% of running it natively for me.
- jojohohanon 6y agoSO the argument here is that it's the storage layer that slows things down? I deduce this since the linked article is about installing a new storage driver to sync to external volumes. What about server workloads where the storage is completely inside the container / on a different server?
- DanHulton 6y agoIt's less the storage layer and more the volume mount on OSX - the default is very reliable, but at the cost of a LOT of speed. Mutagen offers varying levels of reliability, and occasionally I have to restart the sync (like maybe once a week), but it's _much_ faster. The circumstances you're describing sound like it wouldn't be suffering this specific issue in the first place, so I'm not sure how much it'd help.
- ondrek 6y agoAlso, I guess, it's needless to say, most of people don't have Docker already installed (unless your target audience is a dev-ops community). So it's not just "docker run".
- m463 6y agoA lot of people don't realize docker on macos runs in a vm. It would be much nicer if apple coexisted instead of apple-language, apple-frameworks, apple-laserlike-navel-focus. Do community interaction, not just over-the-wall to opensource.apple.com a native apple docker would be great. Imagine: FROM macos:10.13.2 RUN xcode-build ....
- oblio 6y agoApple will never commoditize its own stuff. They're perfectly willing to ruin the lives of countless devs / CI/CD devs, who have to support their crappy platforms, because you can't virtualize MacOS (only AWS can, and even then, it can only be rented in 24h increments at super high prices). Apple controls the end users, their end users have money so devs just have to come crawling to be able to make and sell their apps.
- theThreeTuples 6y agoI’ve used Anka for running macos VMs with good success. So much so that we replaced all our bare metal workloads with portable and repeatable environments. The trade offs are performance related and bugs with the VM tech but those are less costly than managing the bare metal.
- jjnoakes 6y agoAs a user I much prefer a single binary to a docker image.
- dehrmann 6y agoConsidering they use Go, they get this out of the box. Half the motivation for Docker isn't there if you're using Go.
- deleted 6y ago[deleted]
- one2three4 6y agoWhat makes you assume that all people have or even want docker runtime in their machines? Not to mention all the security headaches it brings with it.
- imiric 6y agoThe OCI image format is an established standard and registries are supported across tools. Publishing an image on Docker Hub also makes it available to tools like Podman that don't require a runtime and can run rootless containers. You're also free to download, extract the image and run the binaries however you wish, even outside a container. Docker is a packaging format with a distribution platform and a common execution interface. I see offering it as an option to users only as a net positive. Not to mention that it opens the orchestration door making the application easy to integrate into CI pipelines and complex workflows.
- user3939382 6y agoSome context to my comment, last time I was doing app distribution I used the contemporary best practice which was SVN. I’ve read a dozen articles on the theory of Docker vs VM but still don’t get it. Apparently it saves resources by not replicating the whole OS. Do everyone’s apps really not rely on the specific kernel at all? Even in i.e. PHP apps I usually have binaries tied in that are compiled for the kernel I’ve developed on. Containers are peripheral to my work so I don’t understand but I’m curious.
- VWWHFSfQ 6y agowhat kind of php app are you running that requires to be linked against a specific linux kernel
- user3939382 6y agoLet's say I integrate with a CLI utility, which comes up. Docker wouldn't work? If the answer is no I think I'd say I understand the theory better. Unless docker is providing some kind of universal kernel API or something?
- dbaggerman 6y agoIn that case you would bundle a copy of the CLI utility into your docker container, with the correct version. This also applies to any system libraries your code might be compiled against. Things like shared libraries or CLI utilities are part of the "operating system", but not part of the "kernel". This does mean that you end up with multiple copies of the same utilities and libraries on the system - although docker does have a mechanism to avoid duplication between different docker containers. It also means that if you take your docker container and move it over to a different system with a newer operating system (or a different distribution) all the parts of the operating system it cares about come with it. The Linux kernel - the part that gets shared between containers - is mostly just responsible for process and memory management, networking and interacting with the computer hardware.
- chub500 6y ago
- oblio 6y ago> and also works across platforms and operating systems That's the greatest lie that Docker managed to convince people of. Docker is not portable, its images are not portable. It runs on Linux and that's it. It doesn't even run on other *NIXen. Docker on Mac runs inside a VM. Docker on Windows runs inside a VM. Technically Docker for Windows supports Windows containers. But they only run on... Windows. Docker is as portable as any software I can get my hands on and that I can run inside a VM. So almost all the desktop software I know of. Docker just managed to package its software in a nicer way so that many people don't even realize that there's a VM behind the scenes (most usually notice because Docker is slower/much slower on non-Linux platforms).
- nine_k 6y agoDocker for Windows is a thing, and it does run Windows binaries natively. So you can publish for two platforms. Java is still a good way to have bulletproof cross-platform experience, but JRE is sort of large. JDK 10 or 11, IIRC, allows to package your code, only the needed parts of stdlib, and the VM into a reasonably lean self-contained executable.
- nicoburns 6y agoRust/Go are much better at than Java. You do need a separate binary for each platform which makes it slightly more of a pain for the maintainer to setup CI, but it's much more convenient for the end user.
- threeseed 6y agoI don't care if it runs in a VM or not. That's just an implementation detail. What matters is whether my app and the myriad of dependencies it relies on can be run easily and consistently.