4 ms·
OCI image manifests can specify platforms and architectures. From the end user’s point of view it can be all the same invocation. Docker natively supports Wind
by doctorpangloss 3y ago
OCI image manifests can specify platforms and architectures. From the end user’s point of view it can be all the same invocation.
Docker natively supports Windows, and it is low lift to make native Windows images for many common programming environments.
Does anyone use it? No not really. It makes a lot of sense if you need Windows stack stuff that is superior to Linux, like DirectX, but maybe not so much for regular applications.
There is also macOS containers, a project that has a decent proof of concept of a containerd fork that runs macOS container images. In principle there is a shorter path of work for so called host process containers, but fully isolated exists for macOS, it could work with e.g. Kubernetes, and people want it and it makes sense, and it sort of does exist.
The difference between cross-platform and “cross-platform” as you’re talking about it is really having some absolutely gigantic company, like Amazon or Google, literally top 10 in the world, putting this stuff into a social media zeitgeist.
- tomjen3 3y agoThe main problem, I think, with Windows containers is that they are only really supported on Windows Server - which most developers don't have access to. You can run them through Docker Desktop, but then why not just run the same containers you will be deploying on you server (which is most likely going to be linux based?). I would love for MS to make containers the way to deploy programs to Windows, but that requires them to make the runtime part of the default install and to make it available on all the OSs.
- doctorpangloss 3y agoWindows 2022 containers work on Windows 11. Docker Desktop uses a shim for Windows containers. “dockerd” a single binary for Windows statically compiled is all you need to run Windows containers with the familiar Docker commands, you could also use PowerShell. They are supported all the same. IMO the main issue is that this feature is poorly marketed.
- tomjen3 3y agoIts extremely poorly marketed, since I looked up the MS documentation when I wrote that comment and it only still only said windows server. Still unless it works on Win10 home, it won't be the default way to install software for windows - which sucks, since its a better way than the current one.
- pjmlp 3y agoSoftware delivered via Windows store, specially if packaged with MSIX already uses containers. Windows containers are supported in Windows Professional as well. Maybe it is because I spend most of my time as Windows developer, this wasn't hard to find, > One physical computer system running Windows 10 or 11 Professional or Enterprise with Anniversary Update (version 1607) or later. https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce#windows-10-and-11 https://learn.microsoft.com/en-us/virtualization/windowscont...
- tomjen3 3y agoIt does further down say that you need a windows server even for development purposes. What I missed was that it only applied to windows server images. Also the exception only seems to apply for development and testing services and, for some reason, only a physical computer. Regardless, I was clearly wrong: it is possible, just not well documented.
- airtonix 3y ago[dead]
- gnatolf 3y agoIsn't this still the Windows Server images only? Can I expect everything to run that would run on win 10, 11 and/or server?
- reactordev 3y agoWindows containers can be built on Windows 10 pro and windows 11 pro. All you need is the hypervisor from Microsoft installed under windows Settings->Apps and Features->Additional windows features.
- cowboyscott 3y agoI really like what this script is doing - it's specifying system level dependencies, a database schema, an interpreter, the code that runs on that interpreter, the data (on disk!) required by that code, and an invocation to execute the code all in one script. That's amazing, and this is an excellent model for sharing a stand alone applications with non-trivial dependencies! However, Docker is an OS-level virtualization. Docker natively supports Windows in the sense that there is a native app. That native app spins up Linux virtual machines, so the container is "native" to my Intel CPU with their virtualization extensions, but it is not native to Windows. I use it, which I say with no animus toward your original message. edit: I was ignorant of native windows containers. I'm old and my brain still maps docker to lxc I guess. Apologies to OP - the DirectX line should have caught my attention.
- cpuguy83 3y agoNo, Docker supports native Windows containers. Docker Desktop aims to provide the same experience across Mac and Windows and as such those use Linux VM's, yes. However Docker most definitely supports Windows containers.
- cowboyscott 3y agoSorry, that's right. You can probably guess that all of my Windows Docker use is with Linux images. This particular script wouldn't work as there is no node image for a native windows host (unless there is? again, I'm ignorant of native windows containers).
- pjmlp 3y agoPlenty of Windows shops use Windows containers, from my side you can count with 5 projects delivered into production using Windows Containers. Many App deployments in Azure also use Windows containers.
- opentokix 3y agoYes, "windows shops" are stupid, you got that right. Windows is a toy in the server space, always as been, always will be.
- pjmlp 3y agoPlenty of big boys money goes through such "toy" servers.
- _cenw 3y agoIs that because Microsoft is good at selling it or because it is actually a good piece of tech? We recently had to set up some Microsoft platinum partner test automation software, and the money we spent on SQL Server and Windows instances (on Azure of course) alone could've funded a fleet of Linux servers or a junior dev writing Playwright scripts all day. (Not to mention it produces unactionable output by default, and if I love one thing, it's "this page didn't work one out of 100 times, must be infra problem" incidents)
- pjmlp 3y agoYou would have spent similar amount of money in Red-Hat Licenses, or anyone else worth using with big boys support contracts. Linux is only free when our time isn't worth money. Playwright is developed by Microsoft, by the way.
- _cenw 3y ago> Linux is only free when our time isn't worth money. that's funny, because having rotated through all 3 major cloud providers in the past 5 years now (at different places), Azure support is the most time-wasting not worth it even if it was free, and i'd much prefer if i could waste my time reading documentation that makes sense, but Azure doesn't have that either. Azure doesn't happen to be an outlier in Microsoft products, right? > Playwright is developed by Microsoft, by the way. And I'm happy the people there get to make things that work outside the eldritch horror that is Windows Server.
- deleted 3y ago[deleted]
- bionhoward 3y agoIs directx superior to vulkan? Serious question from a graphics noob (who dislikes windows development)
- GuB-42 3y agoDirectX is more than just Vulkan. It does sound, input, etc... Vulkan is like Direct3D 12, a low level 3D API. Between the two, most seem to consider Vulkan the better option. However, Vulkan has the reputation of being verbose and very much not noob friendly. It is mostly geared towards advanced engine developers who want full control to make the most of the hardware. Besides 3D, the rest of the multimedia API are a bit of a mess it seems. On Windows and elsewhere. I haven't look at it for many years though.
- doctorpangloss 3y agoDirectX the API compared to Vulkan: whatever. DirectX as a whole product: yes. For the two middlewares Unity and Unreal, on real applications, DirectX 11 will have better latency (lower CPU time mostly), DirectX 12 performance will be higher throughput (greater FPS), but neither will be by very much. Like a single application on ordinary hardware, it won’t matter. But for the thing I measure, occupancy, you can get something like 3x as much efficiency with DirectX on Windows compared to the same application on Vulkan on Linux.
- tahnyall 3y ago[dead]
- duped 3y agochroot requires disabling SIP on MacOS, so any kind of "container" that shares the kernel but has a mostly isolated userspace is never going to happen on MacOS. If you want an isolated host environment on MacOS the bespoke approach is to use VZVirtualMachine. The whole point of containerization is to not require virtualization, so it kind of defeats the purpose. I really think people who "want" containers on MacOS don't understand containers or what problem they solve, and if they think they need them should consider why they aren't already running their dev environment in Linux.