Documentation
Prerequisites
Table of Contents
- Private Preview access
- Supported host platforms
- Supported container runtimes
- System resources
- Network and connectivity
- Agent skill
- Tooling
- Azure account (optional, for local-to-cloud)
- Related content
Private Preview access
The container image is in a private registry, so you must be in the Private Preview to pull it. Sign up for the Private Preview to get the registry username and password (pull-only; may be rotated during the preview). Signing up is the only way to get these credentials, so do this first.
The container is for local development (your inner loop). It is not a production database; for production, deploy the same code to Azure SQL Database in the Microsoft Azure cloud (the outer loop).
Supported host platforms
The image is x64 (linux/amd64); on a non-x64 host, add --platform linux/amd64.
| Host OS | Architecture | Status |
|---|---|---|
| macOS 14 or later | x86_64 | Supported (native) |
| Linux (Ubuntu, Debian, Fedora) | x86_64 | Supported (native) |
| Windows 11 | x86_64 | Supported (WSL2) |
Supported container runtimes
The container is OCI-compliant and runs on any modern runtime. Tested runtimes:
- Docker 24 or later
- Podman 5.0 or later
- Rancher Desktop 1.13 or later
- containerd (via
nerdctlor Kubernetes)
Pick the runtime that already works on your machine. The container image and the connection behavior are the same across runtimes.
System resources
Minimum allocation for the container runtime:
- CPU: 2 cores
- Memory: 4 GB available to the runtime VM
- Disk: 10 GB free for the image and a small database; more for larger datasets
If your container runtime’s VM is set lower than this, the container may fail to start or may run with reduced performance.
Network and connectivity
- Initial pull: You need an internet connection the first time you pull the image. After the pull, the container runs fully offline.
- TDS port: The container exposes port
1433by default. Make sure it is not already in use, or remap it in yourdocker compose.ymlor run command. - No outbound calls. The container does not call home. It does not require internet connectivity at runtime.
Agent skill
If you are driving the container with an AI coding agent (Claude Code, Codex, GitHub Copilot, or Cursor) or from the CLI, install the container skill first. For that workflow it is a hard requirement, more important than any individual tool below: the skill teaches your agent the registry sign-in, image name, ports, connection string, and the local-to-cloud handoff, so a single plain-English prompt is enough.
npx skills add microsoft/azure-sql-database-container
It works across Claude Code, GitHub Copilot, Codex, and Cursor. Browse the skill and ready-made prompts in agent skills. Without it, the agent will not know how to sign in to the registry, which image to run, or how to connect.
Tooling
Recommended developer tooling for working with the container:
- sqlcmd (the modern Go-based
sqlcmd) or mssql-cli for terminal access. The container also bundlessqlcmd, so you can query it withdocker execand no host install. - A driver or ORM for your stack. Any driver that talks to Azure SQL Database works with the container without changes:
mssql(Node.js),mssql-python,pyodbc, EF Core, Prisma, SQLAlchemy, JDBC.
Azure account (optional, for local-to-cloud)
The container itself does not require an Azure subscription. The local-to-cloud leg (deploying the same application against Azure SQL Database in production) does require an Azure subscription with permission to create:
- An Azure SQL Database server and database
- A target compute resource for the application: Azure App Service, Azure Container Apps, or Azure Functions, depending on the stack
See the local-to-cloud skill for the deploy flow. If you do not have an Azure subscription, you can still do all local development and exercise the full inner loop.