La creación de entornos de desarrollo y pruebas con SQL Server 2016 ya no requiere horas de instalación manual ni riesgos de contaminación del sistema anfitrión. Mediante contenedores Docker, es posible levantar una instancia funcional, aislada y reproducible en menos de 60 minutos —y en muchos casos, en tan solo unos minutos.
Requisitos previos
Asegúrese de tener Docker Engine instalado: Docker Desktop para Windows/macOS, o docker-ce v20.10+ en distribuciones Linux modernas. No se necesita SQL Server instalado localmente ni licencisa adicionales, ya que se utiliza la imagen oficial mcr.microsoft.com/mssql/server:2016-sp2-express, que incluye la edición Express gratuita y completamente funcional para desarollo.
Configuración mínima funcional
Ejecute el siguiente comando para iniciar una instancia con configuración predeterminada segura:
docker run -d \
--name sql2016-dev \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=StrongPassw0rd!' \
-p 1433:1433 \
-m 2g \
--restart unless-stopped \
mcr.microsoft.com/mssql/server:2016-sp2-express
Este comando inicia un contenedor con:
- Contraseña de usuario
sacifrada y validada (cumple requisitos de complejidad) - Puerto 1433 expuesto al host para conexiones desde herramientas como Azure Data Studio o SSMS
- Límite de memoria de 2 GB para evitar sobrecargas en entornos ligeros
- Reinicio automático si el contenedor falla (excepto cuando se detiene explícitamente)
Persistencia opcional de datos
Para conservar bases de datos entre reinicios del contenedor, cree un volumen vinculado:
docker volume create sql2016-data
docker run -d \
--name sql2016-persistent \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=StrongPassw0rd!' \
-p 1434:1433 \
-v sql2016-data:/var/opt/mssql \
-m 2g \
mcr.microsoft.com/mssql/server:2016-sp2-express
Carga automática de datos de ejemplo
Para acelerar el desarrollo, puede extender la imagen base con un script de inicialización. Cree un archivo init.sql:
CREATE DATABASE Northwind;
RESTORE DATABASE Northwind
FROM DISK = '/tmp/northwind.bak'
WITH MOVE 'Northwind_Data' TO '/var/opt/mssql/data/Northwind.mdf',
MOVE 'Northwind_Log' TO '/var/opt/mssql/data/Northwind_log.ldf';
Luego construya una imagen personalizada:
FROM mcr.microsoft.com/mssql/server:2016-sp2-express
COPY northwind.bak /tmp/
COPY init.sql /tmp/
CMD /opt/mssql/bin/sqlservr && /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P StrongPassw0rd! -i /tmp/init.sql
Supervisión ligera
Monitoree el uso de recursos en tiempo real sin herramientas externas:
docker stats sql2016-dev --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
Eliminación limpia
Al finalizar las pruebas, desmonte el entorno con dos comandos:
docker stop sql2016-dev
docker rm sql2016-dev
Si usó un volumen, elimínelo explícitamente solo si ya no necesita los datos:
docker volume rm sql2016-data
Este flujo garantiza aislamiento total, trazabilidad completa mediante imágenes versionadas y compatibilidad con pipelines CI/CD basados en contenedores.