How to Use a Containerized SQL Database Server Locally using Docker

Containers are a powerful tool for developers. They let you quickly start services like databases without messing up your computer, and they’re great for testing, building, and automating your code.

In this post, we will learn how to.

  • Understand what Docker images and containers are
  • Run SQL Server inside a Docker container
  • Connect to it from your application or database tools

What’s a Docker Image and Container?

Before we get started, let us quickly understand two important Docker concepts.

  • Docker Image: It's a read-only template that includes everything needed to run software—like the code, runtime, libraries, and dependencies. You can think of it as a snapshot or a blueprint for the app.
  • Docker Container: It’s a running version of an image. By default, it’s isolated, lightweight, and temporary—unless you save data using volumes.

“It’s like using a recipe (the image) to bake a cake (the container). You can make as many cakes as you want from the same recipe.”

Prerequisites

  • .NET SDK (8.0 +)
  • Docker Desktop
  • SQL Server Management Studio/Azure Data Studio/VS Code with mssql extension

Step 1. Pull the SQL Server Docker Image

Let us use the SQL Server 2022 Developer Edition, which is free for development and testing.

docker pull mcr.microsoft.com/mssql/server:2022-latest

Docker

This command fetches the image from Microsoft’s container registry.

Step 2. Run SQL Server in a Container

Now, let us run it locally.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong!Passw0rd" \
   -p 1433:1433 --name sql2022 \
   -v sqlvolume:/var/opt/mssql \
   -d mcr.microsoft.com/mssql/server:2022-latest

Let us understand each option.

Option Purpose
-e Set environment variables (accept license and set password)
-p Map port 1433 from container to host
--name Give your container a friendly name
-v Create a Docker volume to persist data
-d Run the container in detached mode (in the background)

SQL Volume

Let us look at the docket container.

Docket container

Step 3. Connect to SQL Server from Local Tools

I will give a try using SSMS.

  • Server Name: localhost,1433
  • Authentication: SQL Server Authentication
  • Login: sa
  • Password: YourStrong!Passw0rd

SQL Server

Successfully logged into the container SQL server.

Localhost

Final Thoughts

Running the SQL Server in a container gives you a consistent, isolated, and easy-to-repeat setup for development. It’s a clean and powerful way to test new features, help new team members get started, or set up local CI.