Despliegue ágil de SQL Server 2016 mediante contenedores Docker

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 sa cifrada 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.

Etiquetas: Docker sql-server-2016 mssql-server Containerization DevOps

Publicado el 9-19 20:59