Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Nick Stinemates @ Docker here. I run BD/Tech Alliances. A lot of blood and sweat went in to this one! I'm here to answer any questions you may have about the announcement, the details, or anything about Docker.


Sorry if this is obvious somewhere, but i have to ask: Will this allow me on windows to pull a linux-based image (ubuntu for example) and run it on the windows platform or pull a windows based image and run it on the linux docker platform host?


> Will this allow me on windows to pull a linux-based image (ubuntu for example) and run it on the windows platform

You can do this today with boot2docker (running a linux VM behind the scenes)

> pull a windows based image and run it on the linux docker platform host?

I suppose the opposite of what I said could be true using something like KVM, but not a use case we are seeing a lot of right now.


If this is all a wrapper around boot2docker, everyone will be very disappointed... I highly doubt this is what the original question was about.


It is not (a wrapper around b2d;) I tried to answer the specific question asked instead of guessing what the question is.

The goal is:

Package your Windows app in a docker container, use same tooling you would otherwise use to deploy to a docker engine running on a Windows host

Package your Linux app in a docker container, use same tooling you would otherwise use to deploy to a docker engine running on a Linux host.


Right... what the problem was is that you started seeing people get confused about running Linux containers on Windows and vice-versa. Hence all the questions around that... I guess that wasn't as clear from the announcement as it could have been. One of the main reasons is probably that the people that have been using Docker are Linux folks and aren't necessarily as familiar with deploying Windows-based applications.


This is great feedback, thank you.


I'm still unclear as to whether the linux apps can be deployed to a docker engine running on a windows host, and, vice-versa, whether docker windows containers can be run on a linux host. The announcement seemed to be clear that both of these are the goal. But your GP post https://news.ycombinator.com/item?id=8458603 causes me to doubt.

Is there a missing comma in each sentence of the goal? It seems like there should be one after "use" or after "engine":

1) [after "use"] Package [on a Windows client] your Windows app in a docker container, use same tooling you would otherwise use [on a linux client], to deploy to a docker engine running on a Windows host Package [on a Windows client] your Linux app in a docker container, use same tooling you would otherwise use [on a linux client], to deploy to a docker engine running on a Linux host.

2) [after "use"] Package your Windows app in a docker container, use same tooling you would otherwise use to deploy to a docker engine [running on Windows or Linux], running [the packaging step] on a Windows host Package your Linux app in a docker container, use same tooling you would otherwise use to deploy to a docker engine [running on Windows or Linux], running [the packaging step] on a Linux host.

I added the implications I understood to highlight the difference the comma placement makes. If there is no comma it's pretty ambiguous / confusing to me on which platform the docker engine is running. I believe from this post of yours that I have misunderstood the announcement, and that windows apps will be able to be made into docker containers that can only run on windows docker engines.


No, you will not be able to deploy a Linux app onto a Windows container, or vice-versa.

Containers share a kernel, this would make it impossible. However, with things like boot2docker (25MB Linux distro), this makes it really leight-weight/easy to deploy into a VM and run that way.


> I believe from this post of yours that I have misunderstood the announcement,

I'm sorry to hear that, we will work to do better.

> and that windows apps will be able to be made into docker containers that can only run on windows docker engines.

This is correct. There's also a thread on how, to the user of docker who just wants to `docker run` something, the distinction doesn't really matter in the end


Is the mix of that true as well?

Package your Windows app in a docker container, use same tooling you would otherwise use to deploy to a docker engine running on a Linux host and vice versa? If not initially is that an ultimate goal?


You can do that with VMs + Docker today.

There are no current goals to make Linux executables run natively in windows and vice versa.


I'm not sure whoever wrote the MS press release really understood this. It seems somewhat vague/misleading on the issue:

"Docker will be able to use either Windows Server or Linux with the same growing Docker ecosystem of users, applications and tools." (emphasis mine)

"bringing together Windows Server and Linux"

"making available some of the best images for Windows Server and Linux."

http://news.microsoft.com/2014/10/15/DockerPR/

Of course, it's hard to talk definitively about something that doesn't exist yet.

UPDATE: It makes more sense after reading this comment: https://news.ycombinator.com/item?id=8460164


We understand it, but its really hard to explain briefly. So many people assume Docker==Linux Containers. Throw in virtual machines and start talking about running a Linux app in a Docker container in HyperV on Windows and it only really works with pictures. And that's before you talk about multiple containers running across a public cloud provider. Demos will help.


I apologize for the confusion, thanks for pointing out exactly what caused that. We'll get better over time!


Ah okay thanks. The partnership sounds great and I know it's really freaking challenging but I hope in the future to see:

1. Native Mac OS X support (so Mac Apps can also be in containers) 2. Being able to mix container operating systems with other host operating systems.

If that ever happens then operating systems and their versions would pretty much no longer matter; you could run anything anywhere without compatibility issues. I feel like this is something that has to eventually happen no matter what I'm just always curious what form(s) it will take.


> 1. Native Mac OS X support (so Mac Apps can also be in containers)

Are there Mac servers out there you want to run apps on? Or just consumer apps you want to run on your mac? Curious about the use case!

> Being able to mix container operating systems with other host operating systems.

VMs are that abstraction today. I think we can do better going forward, but still a lot to do with what we currently have planned.


The use case for our startup is: we have lots of compute and graphics intensive services being created and tested on Macs by developers, targeted for Linux Docker instances in the cloud. It would be nice to be able to run these same containers natively on OS X rather than requiring developers to bring up a local hypervisor (e.g. VirtualBox) and a local virtual Linux instance). This would help with both dev and test. Additionally, sometimes our engineers would like to be able to run compute jobs locally and merge the results back into the cloud based system.


Get your developers to run Linux natively?


That sounds like a difficult proposition without your target being able to run Mac binaries.

Having some sort of translation that's not a VM as a part of the distribution mechanism doesn't make much sense, and breaking the portability of Docker comes at a significant cost.

I struggle to see how to make that work cleanly.


I think you're interpreting his words too literally. Nothing that gets deployed to a QA/staging/production system should be built on a developer's workstation in the first place, those specific containers need to come off a build server. The binaries on the developer's workstation would be built on/for OS X, and the binaries in QA/staging/production on the (Linux) build server for (Linux) targets.


> Are there Mac servers out there you want to run apps on? Or just consumer apps you want to run on your mac? Curious about the use case!

Maybe they haven't but I feel like Apple has abandoned the Mac OS X Server so no apps at least for me in that case but I think consumer apps would be a pretty cool use case.

> VMs are that abstraction today. I think we can do better going forward, but still a lot to do with what we currently have planned.

Roger; thanks!


I second the opinion regarding OSX servers; not only is Xserve long dead but the "server" component of OSX is an application that bundles mostly open source applications with a GUI, if I'm not mistaken?

This appears to be aimed at SOHO users and not racks and racks of servers in a data centre.


Is there a public roadmap for currently planned features? I know there was discussion to make Docker more community driven, but I'm not sure if that went anywhere?

I saw this... https://www.docker.com/community/governance/ but couldn't find any more information...


Docker is already pretty community driven. But given the level of impact, we think we need to make it even more robust and have some proposals.

The first DGAB meeting is on 10/28, where we will propose a different way of working based on all of the feedback.

Stay tuned. We'll have a lot on this in the upcoming weeks.


I'm also a bit confused. Let me give you a specific scenario. I have a windows .net application that works with windows 8 (no gui - some server side stuff). Can I package this up as a container and run this on a linux machine that has docker?


That is not currently a goal. It's the goal that you can tell docker - run this application, and it will find (or create!) a suitable host to run it on.


Of course not.


It's definitely not a wrapper around boot2docker. It's the kernel work etc. to enable native Windows containers running on Windows Server. No VMs need apply. That said, we're also working with Docker on the future of the boot2docker concept so that it easy to work with Linux-based Docker images from a Windows laptop, but that's just tuning the experience.


Excuse the ignorance, since I'm fairly new to Docker. I'm excited about what Docker allows for during development. Will this partnership eventually lead to being able to run containers on my Windows workstation without needing Ubuntu running in a VM?


Yes - windows images on windows hosts, powered by Docker and all tools using the Docker API.


Very cool! THANKS!

ETA? :)


ETA: when the next version of Windows Server is released.


Aren't you concern that technical cooperation with a huge company like MS will slow down your progress?


No - if technical cooperation with a huge company slowed us down, we'd be dead in the water. We've partnered with IBM, Google, Red Hat, VMWare.. lots of big names, lots of great ambition.


Does this mean that we can now easily containerize Windows applications allowing them to be easily moved from machine to machine?

This could be huge for DR.


That's the promise. It's not done yet, we are just getting started.


What's DR?


Disaster Recovery


Will the MS bits be open-source? Will it be in Go?


> Will the MS bits be open-source?

The MS-bits they're contributing to the Docker project will be contributed in the same way everyone does - under the Apache 2 License, in the open, etc.

> Will it be in Go?

It will be contributed in the main docker repo - github.com/docker/docker

As a result, it will be a community/maintainer decision what language it's written in, but obviously we're heavily biased toward Go.


Nick is right. Our default answer will be to use Go to be consistent with the rest of the Docker project. But we'll use whatever language is right for that part of the project.


Which is a .Net language, just saying.


Of course. It will be in C#. Far too much work to be done on Go's Window's support to use it, and no advantage to do so.


Exactly. I'm a firm believer that if you're doing orchestration/automation on Windows and you're not using .Net based technologies, you'll wish you were eventually(coming from a HEAVY Chef on Windows user). Plus, there's Powershell modules to consider, and Powershell is .Net based.. And just the general ecosystem to consider, especially Azure itself. And etc, and etc. Though some F# wouldn't be a bad choice, I suspect the prevalence of C# will win out.

Just makes this "partnership" a bit more, complicated? Or at least, not what it seems on the surface. If the containers aren't compatible between Linux and Windows, and the tooling will end up .Net in the long run(which I firmly believe), then the only common ground will be some semblance of API compatibility?


Can you comment at this point about what containerization on Windows will look like. A tree of processes, a lighter, file-based HyperV, or something else? What effect will this have on the filesystem layout? Will native ACLs be supported or mapping to Unix permissions? Has a timeline for initial code in github been announced?


John Gossman from Microsoft here. Windows Server containers use the approach sometimes called Operating System Virtualization, just like Linux containers, Jails, etc.. The Wikipedia article is a pretty good summary: http://en.wikipedia.org/wiki/Operating_system%E2%80%93level_...

They are process based. They do not depend on HyperV and can run on Windows Server on bare metal or inside any hypervisor or cloud.


Can you compare this to AppV?


I'll take a stab at it (no relation to Microsoft). As described in the following link, App-V does streaming of client app code from a server, appears very client-oriented. The technology behind it might not be, though: http://blogs.technet.com/b/gladiatormsft/archive/2013/11/05/... (describes the registry key with exceptions to the underlying namespacing of handles, I think?) This appears to be called Named Kernel Object Virtualization (a.k.a. the VObjects Subsystem) from the title of the post. But again, client-side oriented. I expect Docker integration to be server-side oriented code for this. Oh and if anyone's saying Microsoft's late to the party, there have been similar attempts on Windows platforms since at least 2006 using such techniques: https://www.usenix.org/legacy/events/vee06/full_papers/p24-y...


Disclaimer: I am not speaking for Microsoft here, but my understanding of the facts that have been released.

> Can you comment at this point about what containerization on Windows will look like.

I cannot directly.

> A tree of processes, a lighter, file-based HyperV, or something else?

HyperV integration will exist (and is currently being worked on in the open for Docker) but the technology is fundamental to Windows, like hyper-v. As far as I am aware, not a hyper-v decendant.

> What effect will this have on the filesystem layout?

Each container will have its own.

> Will native ACLs be supported or mapping to Unix permissions?

Can't comment on these details, sorry!

> Has a timeline for initial code in github been announced?

It has not.


I guess Windows Server already has some kind of "containerization" [1].

Will Docker be shipped as a part of a Windows Component & a paid service from MSFT?

http://www.microsoft.com/en-us/windows/enterprise/products-a...


That's part of the announcement, windows will be updated to include Container primitives which docker will use.


All versions of Windows? I wouldn't expect their entry level offering to but having it on the pro versions would be nice.


are you working with Apple to bring native docker to that platfrom?


I don't know that Apple would ever feel that pressure. They really just don't cater to developers, if you look at the issues with the Mac App Store for an example.

That said, it would allow for a more consistent developer experience for application/server development towards how things are deployed with containers on Linux. The biggest advantage OSX really has is that you get a clean UI for when you are simply a user, and a unix environment with the same tooling you use to build applications that will be deployed on Linux.

My true hope for this, was actually to see something beyond boot2linux. And, oh I really wish that HP didn't disable the virtualization support on their lower-end desktops (what I'm currently stuck with at work). VMWare workstation is really the only option for me, and running Ubuntu under that for *nix dev/testing.


I really hope the Microsoft partnership does put some pressure on Apple to provide this support as well. But it just feels like something that isn't really their style. While having software components appear like "just another container" is great for developers, its very anti-Apple. They don't view the iphone as "just another smartphone". Everything Apple is standout/special in some way. I hope I am wrong though because I love Docker and would welcome this with open arms.


Outside of the frame of talking about partnerships but talking as an apple/Docker fan, Docker running on ios would be awesome


you mean on osx, right?


Nope, I meant ios :)


I suppose "open arms" is now a pun then :)


:)


I can't comment on unannounced partnership or details, sorry!


will Windows base images be made available on the Docker Hub? How will that work?


> will Windows base images be made available on the Docker Hub?

Yes!

> How will that work?

The same way it works now. Find an image you want to run, and docker run it.


so Window's licences will be free?


I suspect that you'd still need a Windows Server license to start off with. It may or may not need a VM under the hood, but that's a MS thing to figure out. They certainly couldn't license a container the same way as a full Windows VM or bare metal install.


Id expect that since the idea is having your windows container running on a windows host, that each version of windows server will have a "this edition allows X number of containers" limit. This would line up with how they treat VMs. Lets hope the number is 5x the current VM limits.


> Lets hope the number is 5x the current VM limits.

Why, let's open they are unlimited. :)


Great question.

I'll be honest and say I don't have an answer. However, we're working on derive one and you'll know as soon as we do.


I thought the whole point of containerization was that you ran apps in a container, but the container doesn't contain an operating system. (You have several containers on one instance of the OS, not several VMs, each with its own OS. That's how it works in Linux, anyway.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: