¡Hola a todos!
Hace mucho tiempo que no escribía en mi blog, he revisado que hay muchos links rotos y algunos posts bastante viejos, y quien lo diría, pero tengo este blog desde el 2011 y aun no me lo puedo creer.
El día de hoy quiero compartir con la comunidad de desarrolladores, como instalar SQL Server en Linux, muchos dirán que tutoriales, videos, cursos y demás, ya pululan por todo el internet, y que solo es cuestión de Googlear (o Bingear, como hago yo) e investigar un poco. Bueno, en el mundo de la programación, caminos, existen muchos para llegar al mismo destino, y aquí viene la mía.
Primero que nada, todas las distribuciones de Linux son algo complicadas de comprender a la perfección sino tenemos los conocimientos necesarios, ya sea las basadas en Debian, Arch, Fedora u OpenSuse. En todos mis años como desarrollador, que ya voy por las dos décadas, he usado muchísimas distros de Linux, pero siempre he sido un desarrollador Microsoft, empecé con Visual Basic 6, luego VB.NET y luego migré a C# y desde ahí siempre me he venido capacitando y entrenando para mejorar mis habilidades, pero nunca dejé el mundillo Linux, trabajar en un sistema operativo no te limita a estar solo en ese, sino, que se puede seguir aprendiendo y depende de cada autodisciplina personal, en mi caso siempre fue probar distros de Linux, malogrando una que otra computadora, quemando placas madre o estropeando sectores importantes en los discos duros, sin embargo siempre se aprende de los errores.
Así que encontré una forma diferente de instalar SQL Server que podría servir para la mayoría de las distros, y esa es, instalando Docker. En este caso sería el Docker Engine, el cual no explicaré aquí, puesto que el tutorial en la web oficial está lo bastante claro para instalarlo, pueden seguir el link en la documentación oficial.
Una vez que lo tengan instalado, lo ideal sería buscar la imagen en Docker Hub, y seguir los pasos, pero yo se los doy más fácil, vamos a usar un archivo de Docker Compose, el cual se escribe en YML (Yámel, para los cumpas).

Vamos a pasar a explicar el contenido del archivo. Recuerden que un archivo YML solo es un conjunto de pasos y se diferencian por indentación.
services: aquí definimos que queremos instalar, en este caso solo hay uno, SQL Server, el archivo YML podría tener más, pero eso ya queda a gusto del lector.
image: aqui ponemos la imagen de Docker que pretendemos instalar, en este caso es SQL Server 2019 en Ubuntu 20.04, escogí estas porque son las últimas estables, aunque también puedes reemplazarlo por las últimas versiones como SQL Server 2022 y Ubuntu 22 LTS. Así que se puede reemplazar por mcr.microsoft.com/mssql/server:2022-latest.
user: aquí definimos ‘0:0’ que significa que queremos tener el usuario de superadministrador (sa).
ports: colocamos el puerto 1433 que es el puerto por default de SQL Server, tanto en el servidor como en el contenedor.
container_name: Este valor es completamente opcional, en mi caso le puse sqlserver2019 porque quiero ver siempre que version tengo instalado, en el futuro.
environment: En esta sección especificaremos valores para las variables de entorno al momento de instalar SQL Server.
ACCEPT_EULA: Básicamente le decimos ‘YES’ al acuerdo de licencia final (End User License Agreement)
MSSQL_SA_PASSWORD: Aqui va la contreseña del superadministrador, cámbialo por el que tu quieras.
MSSQL_PID: Aquí va la edición que quieres instalar de SQL Server, puede ser Express, Developer, Standard o Enterprise, estas dos últimas requieren una licencia original válida, pero para desarrollo suficiente con la edición Express, que tiene un límite por Base de Datos de 10GB.
volumes: Ya que estamos instalando un Servidor de SQL Server, lo más lógico es que se persista las bases de datos que queremos usar, para ello, debes configurar una carpeta física en el host, para este caso yo uso ~/docker/sqlserver-data, la cual debe existir, la puedes cambiar a la de tu preferencia, no olvides dar permisos de escritura. Y esta se mapeará con la carpeta /var/opt/mssql, que es donde irán todos los archivos mdf y ldf de cada base de datos.
Puedes entrar a este link de Gist de GitHub que he creado: https://gist.github.com/erickorlando/1d0143d672d2f84aae3b928b8ab9a582
No olvides de marcarle una estrellita o hacer un fork.

Una vez hecho todo eso, solo debemos nombrar al archivo como docker-compose.yml, ponerlo en cualquier carpeta y ejecutar el siguiente comando:

El parámetro -d sirve para que se ejecute en segundo plano.
¡¡Y listo!! Ya tendrás SQL Server corriendo sobre tu distro de Linux, podrás conectarte desde servidores externos, clientes externos (todo depende de tu firewall), en mi caso estoy usando SQL Management Studio desde Windows 11 y conecta perfecto.

Se que no se nota mucho, pero la primera vez que vi el pingüino en el SQL Server me emocioné. OJO al dato, si en caso utilizas una versión superior de Ubuntu o de SQL Server, es posible que el pingüino no se vea y salga un signo de interrogación.
También lo probé con DataGrip en Linux y conecta igual de bien.

Si el artículo te ha servido, no te olvides de compartirlo con tus colegas.
Saludos y hasta pronto.
Erick Orlando ©