Cómo desplegar un servidor de base de datos Microsoft SQL Server, en pocos segundos, mediante Docker. Además, le añadimos un volumen para que sea persistente (los datos no se eliminan al detener el contenedor). La base de datos SQL Server en Docker será accesible externamente, desde cualquier equipo de la red.
- Requisitos para desplegar servidor de BD SQL Server con Docker.
- Desplegar contenedor Docker con Microsoft SQL Server (mssql).
- Acceso a SQL Server en Docker desde línea de comandos del contenedor.
- Acceso remoto a SQL Server en Docker mediante ODBC.
Requisitos para desplegar servidor de BD SQL Server con Docker
Necesitaremos disponer de Docker Desktop, o bien en Windows, como indicamos en este tutorial:
O bien en Linux:
Para el despliegue del contenedor el equipo anfitrión (el que tiene instalado Docker Desktop) deberá tener conexión a Internet.
Desplegar contenedor Docker con Microsoft SQL Server (mssql)
Para descargar el contenedor con Microsoft SQL Server, desde la línea de comandos (sea MS-DOS o cmd de Windows o el shell de Linux), ejecutaremos el siguiente comando:
1 |
docker pull mcr.microsoft.com/mssql/server:2022-latest |
Para iniciar una imagen Docker del contenedor anterior MS SQL Server, hacerla persistente y accesible remotamente (externamente), ejecutaremos este otro comando:
1 |
docker run --restart=always -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=MiContraseña" -p 1433:1433 -v sqlvol:/var/opt/mssql --name mssql --hostname srvmssql -d mcr.microsoft.com/mssql/server:2022-latest |
Nota importante: hay que establecer una contraseña fuerte para el usuario sa (números, letras, caracteres especiales, etc.), de lo contrario el contenedor dará error al iniciarse y quedará en estado «restarting» indefinidamente.
El contenedor desplegado se llamará «mssql»:
Ya tendremos desplegado y funcionando un contenedor con Microsoft SQL Server, accesible remotamente por el puerto 1433.
Acceso a SQL Server en Docker desde línea de comandos del contenedor
Una vez desplegado el contenedor «mssql», para acceder a su línea de comandos, ejecutaremos el comando:
1 |
docker exec -it -e LANG=C.UTF-8 mssql bash |
El comando anterior accederá al shell del contenedor «mssql». Una vez en el shell, ejecutaremos la utilidad de línea de comandos de SQL Server: sqlcmd, para ello, accederemos a la carpeta bin donde se encuentra, con el comando:
1 |
cd /opt/mssql-tools18/bin/ |
Accederemos a la utilidad sqlcmd que conectará con el servidor de base de datos SQL Server, con el comando:
1 |
./sqlcmd -S localhost -U sa -P MiContraseña -C |
Una vez conectados, como ejemplo, ejecutaremos la siguiente sentencia SQL que nos devuelve el nombre de la base de datos a la que estamos conectados:
1 2 |
select DB_NAME() as BD; go |
Por defecto, si no se ha indicado otra cosa, nos devolverá «master»:
Otro ejemplo, para cambiar la contraseña del usuario «sa», ejecutaremos la siguiente sentencia:
1 2 |
ALTER LOGIN SA WITH PASSWORD="NuevaContraseña"; go |
La contraseña para el usuario «sa» quedará modificada con la nueva.
Para salir de sqlcmd ejecutaremos el comando:
1 |
exit |
Y para salir del shell (bash) del contenedor también ejecutaremos:
1 |
exit |
Acceso remoto a SQL Server en Docker mediante ODBC
Usaremos ODBC para acceder al servidor de base de datos SQL Server doquerizado. Para ello, desde el equipo cliente con Windows 10 o Windows 11, abriremos «Orígenes de datos ODBC (64 bits)»:
Pulsaremos en «Agregar» para «DSN de usuario» (si queremos que el ODBC esté disponible para todos los usuarios del equipo deberemos acceder a ODBC como administradores y pulsar en «DSN de sistema»):
Elegiremos el controlador «SQL Server» y pulsaremos «Finalizar»:
Si estamos accediendo desde el equipo anfitrión con Docker Desktop, en «Servidor» introduciremos «localhost». Si por el contrario estamos accediendo desde un equipo externo de la red, introduciremos en «Servidor» la IP o el nombre DNS del equipo que contiene Docker Desktop y el contenedor con MS SQL Server. Pulsaremos en «Siguiente»:
Marcaremos «Con la autenticación de SQL Server, mediante un id. de inicio de sesión y una contraseña escritos por el usuario». Introduciremos usuario y contraseña de inicio de sesión en SQL Server. Para el contenedor Docker desplegado, por defecto, será el usuario «sa» y la contraseña que hayamos indicando en su despliegue:
A continuación, podremos indicar a qué base de datos conectarnos o bien dejar la de defecto «master»:
Podremos configurar otros parámetros para la conexión ODBC con SQL Server (idioma de los mensajes, cifrado, conversión de caracteres, configuración regional, etc.). Pulsaremos «Finalizar»:
El asistente para crear un origen de datos ODBC para SQL Server nos mostrará un resumen con las opciones elegidas:
En la ventana anterior podemos hacer una prueba de conexión, pulsando en «Probar origen de datos…». Si la conexión es correcta, nos mostrará el mensaje:
1 2 3 4 5 6 7 |
Controlador ODBC de Microsoft SQL Server Versión 10.00.22000 Ejecutando las pruebas de conectividad... Intentando la conexión Conexión establecida Comprobando las opciones Desconectando del servidor PRUEBAS COMPLETADAS CORRECTAMENTE |
De esta forma, habremos comprobado el acceso al servidor SQL Server en Docker mediante ODBC.