There’s Application Virtualization and There’s Docker

In what appears to be a recurring theme (which I promise I’ll move off of soon), I’m going to spend some time talking about what Docker isn’t – Docker is not application virtualization.

I spent a good amount of time at VMware where I worked on VMware View (which begat Horizon View which begat Horizon 7), so I’m more than a bit familiar with desktop and application virtualization. And, I understand why some people, when they first hear us talk about leveraging Docker for application portability they think along the lines of App-V, XenApp or ThinApp.

Yesterday we talked about how the modern software supply chain runs on Docker, and in that post we noted that 41% of Docker users are targeting application portability as a core use case.

App virtualization docker 1
Before joining Docker if I heard “application portability” I would have immediately thought of ThinApp (based largely on my VMware heritage). That phrase to many who work in traditional server-based and desktop computing  means the ability to deliver applications seamlessly without encountering common pitfalls such as “DLL hell”. It could mean using something like App-V or ThinApp to put the application inside of a sandbox that includes the app and all it’s necessary DLL’s. Or, it could mean hosting the application on a server, and serving it up remotely a la Citrix XanApp or Microsoft’s RemoteApp.  Common examples of application virtualization targets include IE6 with custom extensions, Microsoft Word, Excel, etc..

So there is some common conceptual ground here between these application virtualization solutions and Docker. But there are also some critical differences.

As I wrote previously, Docker is not a virtualization technology in the historical sense of the word so much as it’s an application delivery platform. Docker enables traditional monolithic applications to be delivered as a set of reusable microservices.

All of the tools I mentioned in this post are really aimed at delivering legacy Windows desktop applications. These applications are monolithic in that they contain their own GUI (vs. a web app that is accessed via a browser). By contrast,the most widely used Docker workload are multi/micro service web apps.

So, yes Docker containers does encapsulate all the code and libraries necessary to run a service. But those services are fundamentally different than the applications that are delivered via traditional application virtualization technologies.

In the end Docker is not a direct replacement for application virtualization. It’s a way to take many of the applications deployed using app virt technologies and recreate them in a manner that offers higher levels of agility, portability, and control.


Learn More about Docker