Several years ago something earth-shaking happened at Microsoft: the Windows Base team at Microsoft started thinking about how to add Docker support for containers to Windows Server. The result was Windows Server Containers which were introduced as a new feature in Windows Server 2016. What followed was a cascade of efforts by Microsoft to embrace and extend container technology, both for on-premises and in-the-cloud environments. The advantages of using containers for hosting applications and workload services were clear: higher availability, more scalability, greater flexibility, improved use of resources. To many enterprises and organizations, migrating to a container-based microservices architecture seemed a no-brainer.
There was one problem though. Many shops that are based upon a Windows Server infrastructure also have Microsoft SQL Server as a key part of that infrastructure. And containerizing SQL Server turned about to be difficult to do with existing versions of SQL Server. To understand more about the challenges Microsoft faced with implementing SQL Server containers and how two enterprising ex-Microsofties developed a solution, I talked recently with Paul Stanton, co-founder of WinDocks, a firm focused on Docker SQL Server containers.
MITCH: Thanks, Paul, for agreeing to let me interview you about the challenges and benefits of containerizing Microsoft SQL Server.
PAUL: Thanks, Mitch, I appreciate the opportunity.
MITCH: Paul for any of our readers who might not be too familiar yet with containers, could you start by briefly explaining what this technology is all about and why many enterprises are interested in it?
Enterprise decision-makers recognize the strategic role of containers for app modernization and cloud adoption.
PAUL: Docker’s open source launched in 2014, and has since emerged as the de facto standard for modern software development, supporting Linux distros and Microsoft Windows, and all public clouds. Containers provide application packaging with assured portability. Previously, a developer could share an updated application that would often require debugging to resolve differences in machine configuration. Containers solve this packaging issue and “just run” on different servers or clouds.
Enterprise decision-makers recognize the strategic role of containers for app modernization and cloud adoption. Microsoft, Red Hat, Amazon, and others are making containers central to product and service roadmaps.
MITCH: Are containers good for everyone or is their use case more limited to specific applications and server workloads for certain types of businesses or organizations?
PAUL: Docker containers focused initially on stateless application support, but it has been extended to support stateful backends. MySQL and Postgres rank in the top 5 Linux images, and Microsoft emphasizes Linux container support for SQL Server 2017 and 2019. Containers are now a preferred architecture for full stack software solutions.
MITCH: Let us focus in now on running Microsoft SQL Server in containers. Why is this so hard? What are the challenges contrasted with running other kinds of server workloads in containers? When I ask, “Why is it hard,” I’m referring to the challenges of using a Microsoft-only solution, not using WinDocks. We’ll get to WinDocks in a moment.
PAUL: Microsoft substantially re-engineered Windows Server 2016 to support Docker Linux containers. In the new design, each container includes the application plus a portion of the Windows OS and runs on the Windows kernel. This architecture, unfortunately, breaks compatibility with existing systems and infrastructure. Microsoft’s Windows SQL Server containers don’t support Windows Authentication, VSS, SQL Writer, and other applications. With containers including portions of the OS, each Windows update requires containers to be rebuilt, complicating maintenance. Windows images are also notoriously large and resource intensive, averaging over 10 GB. The new architecture also introduced security concerns, with public image repositories potentially including malicious code and security vulnerabilities.
These issues have limited adoption and Microsoft’s SQL Server division has refocused SQL Server container support on Linux. It’s now been a year since Microsoft last updated Windows SQL Server container images.
MITCH: What drives businesses and organizations toward running SQL Server in containers? Are there any benefits over simply running it in a virtual machine in an IaaS cloud?
PAUL: SQL Server containers deliver secure, isolated environments for development and test in seconds. Where five developers previously worked on separate machines, they can now provision isolated containers in seconds, on a shared host. The result is greater productivity, improved security, and reduced maintenance and economy. Test coverage expands, and organizations realize improved software release quality.
Production use of SQL Server containers is also developing. SQL Server containers with SSRS are attracting interest for adding SSRS support to SQL Azure and AWS RDS (both lack SSRS support). SSRS containers are also being applied for SSRS scale out.
MITCH: So tell us a bit now about WinDocks. Why did you develop it together with Ramesh Parameswaran?
PAUL: Ramesh and I met at Microsoft where we worked on cross-platform support for Windows NT, when support for UNIX System V was an important goal! We felt the opportunity to deliver an independent port of Docker’s source to Windows was too compelling to pass up!
MITCH: Very briefly, how does WinDocks work?
PAUL: WinDocks SQL Server containers are complete named instances, each with Windows registry entries, and support Windows Authentication, and run as a Windows service. The design delivers the benefits of Docker containers while maintaining compatibility with existing systems and infrastructure.
WinDocks avoids the security concerns of public image registries, by cloning a locally installed SQL Server instance to create SQL Server containers. With widespread use in the enterprise, creation of SQL Server containers through instance cloning is a proven, with definite benefits in security, and support for existing infrastructure. WinDocks SQL Server containers also support an expanding set of SQL Server services, including the database engine, SSRS, SQL Browser, and other services.
MITCH: Again from a bird’s-eye view, what are the high-level steps an SQL admin would perform to migrate an on-premises or VM-based SQL Server instance into a container running WinDocks?
SQL Server containers deliver secure, isolated environments for development and test in seconds. Where five developers previously worked on separate machines, they can now provision isolated containers in seconds, on a shared host.
PAUL: WinDocks involves a 10-minute installation on Windows Server 2012 R2 or Server 2016, and users can start building containers within minutes. A free WinDocks Community Edition allows new users to become familiar with containers on Windows 8.1 or 10, Pro and Enterprise editions as well as Windows Servers 2012 R2 and 2016.
MITCH: How has the response to WinDocks been in the enterprise sector?
PAUL: Awareness is growing that WinDocks is the right choice for Windows SQL Server containers, and we’ll grow by 50% again this quarter. Financial services and healthcare are the top markets, with high customer satisfaction.
MITCH: Are there any demos or tutorials available online where SQL Server admins can learn more about how WinDocks works and what it can do?
PAUL: Complete docs are available on WinDocks.com and each install includes ready-to-go samples (\WinDocks\samples). Most DBAs are comfortable working with WinDocks after 2-3 hours.
MITCH: Anything else you want to add? Like what’s coming next over the horizon? 🙂
PAUL: There are a number of interesting trends. DBAs and developers will increasingly manage end-to-end data delivery, as storage systems are abstracted with container-based systems. Also, data delivery won’t be limited to containers only. WinDocks supports data delivery to all SQL Server environments, including Microsoft’s SQL containers, conventional SQL Server instances, and SSRS in the public cloud. Containers should also improve data governance and security. Container images provide a basis for a secure enterprise data catalog, with an auditable record of images, security provisions, and usage.
MITCH: Paul, thanks very much for giving us some of your valuable time.
PAUL: Thank you, it’s been a pleasure.
Check out this tutorial on our site by Anderson Patricio if you want to learn more about how to use Windows Server Containers: Newbie No More: Running Your First Windows Server Containers.
Featured image: Shutterstock
Microsoft 365 is loaded with configurations, policies, and settings—some obvious, some buried. This Microsoft 365…
Setting PowerShell execution policies at the Group Policy level can greatly enhance your organization’s security.…
Ah, the good old days — when Exchange 2010 was king. But with each new…
The GDPR and the CCPA are both aimed at protecting privacy. Although many similarities exist…
Azure DevOps is fast becoming the next big thing. This Azure DevOps Quick Tip shows…