En esta segunda entrada de esta serie vamos a ver cómo descargar nuestra primera imagen (SQL Server) y cómo crear un contenedor a partir de ella. Partimos de la entrada anterior donde al acabar ya teníamos instalada nuestra aplicación «Docker Desktop», preparada para empezar.
Os dejo aquí la lista de links a las entradas de la serie, que iré completando a medida que vayan saliendo…
Como he comentado antes, yo voy a utilizar Docker para virtualizar un SQLServer en varias de sus versiones (2107, 2019 y 2022), de esa forma podré «arrancar» un contenedor con cualquiera de estas versiones para probar mi aplicación con ellas.
Esto me evitará tener en mi máquina instaladas estas tres versiones, con el consiguiente espacio de disco ocupado y la consiguiente memoria ocupada (por ejemplo, por los servicios de SQL Server). En general, de esta forma (utilizando contenedores) conseguimos tener nuestra máquina más «limpia».
Para descargar nuestra imagen accederemos a la ventana de Terminal desde Docker y escribiremos el siguiente comando (pedimos la última imagen disponible de mssql 2017):
Una vez finalizada la descarga deberíamos tener disponible nuestra imagen descargada. Con los datos de tamaño y un pequeño menú a la derecha con algunas opciones básicas.
Todavía no podemos trabajar con nuestro SQLServer, para poder hacerlo necesitamos crear, al menos, un contenedor/instancia a partir de la imagen descargada.
Crear un contenedor a partir de una imagen
Para crear un contenedor o instancia de una imagen y trabajar con ella, necesitamos (o podemos hacerlo) utilizando el comando run. Vamos a ver el comando desde la pantalla de Terminal o la opción visual que nos ofrece Docker.
ACCEPT_EULA: Nos permite confirmar la licencia de usuario del producto (usaremos el valor Y -yes-).
MSSQL_SA_PASSWORD: Nos permite definir el password para el usuario sa (lo usaremos luego para conectarnos).
MSSQL_PID: Nos permite «modificar» la versión con la que se creará el contenedor a partir de la imagen (Evaluation, Developer, Express, Web, Standard, Enterprise (*), EnterpriseCore (*), A product key).
Podemos crear y arrancar nuestro contenedor desde la pantalla de Terminal utilizando el siguiente comando (run); Y posteriormente he lanzado «Docker ps» para ver los contenedores en marcha y en la imagen inferior véis la respuesta:
Ahí podéis ver las variables de entorno SA_PASSWORD, ACCEPT_EULA, MSSQL_PID y los valores que les he asignado.
Si queremos hacer lo mismo desde Docker Desktop, basta con pulsar el botón de RUN que hay junto a la imagen y rellenar los parámetros (variables de entorno) en la pantalla que aparece.
El resultado en ambos casos debería ser el mismo, si nos vamos a la sección de [Containers] de la aplicación deberíamos ver nuestro nuevo contenedor de SQL Server 2017 versión Express, en marcha.
Voy además a arrancar una segunda instancia, en este caso con la versión «Developer«; Necesito cambiar el puerto para que no colisionen y además le voy a poner un nombre diferente; Para ello utilizaré el siguiente comando:
NOTA: Cuando he escrito el artículo he generado las 2 instancias en Inglés, pero posteriormente realizando otras pruebas he añadido el parámetro MSSQL_LCID con el valor 3082 y con eso se consigue tener el servidor en español.
-e MSSQL_LCID=3082
Conectar a las instancias de SQL Server
Sólo nos queda conectar a las 2 instancias (contenedores) de SQL Server que hemos arrancado, como si estuvieran instalador en nuestro equipo. Para ello voy a hacerlo desde el «Management Studio» como lo hago habitualmente para conectarme a otros servidores y al mio en local.
Utilizaré los siguientes parámetros para conectarme a ambas instancias; Estos para la primera:
.
Y los mismos, pero cambiando el puerto de conexión para la segunda:
.
Ahora que ambas están conectadas podemos ver las propiedades y ver que ambos coinciden con las configuraciones que hemos definido al arrancar nuestros contenedores. Los puertos son el 1433 y el 14333 y las versiones son la Express y la Developer del SQL Server 2017 (versión interna 14.0).
Ahora ya podemos conectar nuestra aplicación a cualquiera de nuestras instancias.
Hasta aquí esta segunda entrada. Espero que os haya sido útil. Como siempre los comentarios, sugerencias y críticas son bienvenidas.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
La idea es crear una serie de entradas para exponer desde cero, qué es Docker, cómo nos puede ayudar a nosotros como desarrolladores y explicar todo el proceso desde cero hasta poderlo utilizar. Empezaré por la instalación y posteriormente veremos cómo configurar un par de ejemplos diferentes (desde la instalación hasta su utilización).
Para todo esto necesitaremos varias entradas. Os iré completando la lista de links a medida que vaya escribiendo cada una de ellas.
Hay muchas definiciones en internet sobre docker, si las revisamos incluyen palabras como, contenedores, virtualización, opensource, plataforma, aplicaciones, imágenes,… Todas ellas tienen que ver con el concepto, pero para empezar a entenderlo tal vez son demasiadas…
Al final, si lo tengo que definir con mis propias palabras de la forma más sencilla posible(y seguramente no será la más correcta), sería algo así como:
«Es una plataforma que me permite ejecutar aplicaciones de forma virtualizada. Sería equivalente a tener una máquina virtual, pero sólo para una aplicación.»
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…