Docker containers are a new Windows capability that has evolved significantly since being introduced two years ago. Enterprises have a choice between Microsoft and Windocks for Windows SQL Server container support, and Microsoft also offers Docker Linux containers for SQL Server 2017 and 2019. This article examines the state of Docker Windows SQL Server support, and use-cases.
Containers provide fast delivery of instances, and a stateful container requires fast delivery of data. Windocks includes SQL Server database cloning along with conventional “docker volumes.” Database clones deliver read/write supporting databases in seconds with minimal storage. Windocks database cloning supports delivery of data to all SQL Server environments, including Microsoft’s SQL Server containers (Linux and Windows), conventionally installed SQL Server instances, as well as Windocks SQL Server containers.
Contrasting container architectures
Windocks is an independent port of Docker’s open source project to Windows that supports Windows Server 2012 R2 and 2016, and all editions of SQL Server 2008 onward. Windocks SQL Server containers are created by cloning a locally installed SQL Server instance, and are delivered as SQL Server named instances. Microsoft’s containers are a Linux style container that combines applications with a significant portion of the Windows operating system that runs on a shared Windows kernel. Microsoft's SQL containers run as an executable rather than as a full SQL Server service.
Microsoft’s Docker container architecture, unfortunately, breaks compatibility with Active Directory, Windows Authentication, and VSS and SQL writer based apps. The Windows container footprint results in images that average over 10 GB, and must be rebuilt following Windows updates. Adoption has been limited, and these issues have led Microsoft’s SQL Server division to refocus SQL Server container support on Linux. Microsoft’s Windows SQL Server images are deprecated and were last updated a year ago, see: https://github.com/microsoft/mssql-docker/tree/master/windows
Windocks SQL containers are created and managed with the Docker API and commands, but are delivered as named instances and maintain compatibility with Windows Authentication, and existing SQL Server tools, processes, and infrastructure. Database cloning supports use of either Windows Virtual Hard Drives (VHDs) or enterprise storage arrays, and delivers multi-terabyte environments in seconds, with minimal storage consumption. Two articles describe database cloning for Linux containers and conventional instances.
Database Cloning for SQL Server 2017 Linux Containers
Database Cloning for Conventional SQL Server Instances
SQL Server containers created by cloning a locally installed instance delivers a number of benefits:
Security: Windocks SQL containers avoid security concerns associated with public Docker image repositories that can include security vulnerabilities and potential malware. Windocks containers support existing systems and infrastructure, including Active Directory and Windows authentication. Containers as SQL Server named instances use proven SQL Server namespace isolation and security. The National Institute of Standard and Technology (NIST) published a guide outlining Docker container security concerns. For a summary of the NIST concerns and how Windocks addresses them, see: SQL Server Container Security and NIST SP 800-190
Maintainability: Windows updates do not require Windocks images and containers to be rebuilt. SQL Server updates applied to the parent instance are inherited by new containers.
Scalability: Windocks servers commonly support up to 30 or more SQL Server containers, and provide an “elastic database pool” similar to SQL Azure database service.
Licensing: Microsoft SQL Server licenses allow for an unlimited number of named instances on licensed hosts. The economy of Windocks containers is beneficial compared to Microsoft SQL Server container license terms, where each SQL Server container is licensed with a minimum 4 CPU cores (and treated as a VM equivalent). License compliance is an important topic, so be sure to refer to your SQL Server licenses to understand your rights and responsibilities.
Data delivery: Windocks database cloning supports use of enterprise storage arrays and Windows Virtual Hard Drives (VHDs), to provide secure production data with read/write support, in seconds, for any SQL Server environment.
Use cases
Dev/Test and DevOps: adoption of Docker SQL Server containers reflects patterns seen in early Linux container adoption, focusing on development, test, and DevOps. Containers paired with database clones deliver fast dev/test support, with user provisioned or automated testing. The result is faster development and expanded test coverage, and improved software release quality.
SQL Server migrations: for upgrading a SQL Server release or migration to Linux, containers and database clones help with reliable, fast delivery of test environments. Database cloning supports migration testing, with a detailed article on SQL Server 2008 to SQL 2017 Linux containers here
SSRS for Public Cloud and Scale Out: SQL Server containers with SSRS support provides horizontally scalable SSRS support for SQL Azure databases, Managed Instances, and AWS RDS. SSRS containers are also being proven for new approaches to scale out, with standard edition. Read more on SSRS scale out
Windows SQL Server containers compared
Containers are the future
It’s increasingly clear that Microsoft will increasingly focus on containers for advanced SQL Server support. Fortunately, Windows based organizations can get started today with containers, with a rich set of capabilities offered by Windocks. Windocks is widely used in the financial services industry, and provides a complete Windows based solution, that easily complements, but does not require Linux supporting infrastructure.
Get in touch with our customer success team, and learn how you can get started with Windocks SQL Server containers by emailing support@windocks.com Or, simply download the free Windocks Community Edition