LINUX

Cómo configurar MS SQL Server en el contenedor Docker

servidor mssql linux docker

Este artículo explica cómo configurar y ejecutar Servidor Microsoft SQL en contenedor Sistema operativo Linux. Usaré la imagen disponible en Docker Hub para ejecutar un contenedor Docker. Una versión anterior de SQL Server está diseñada para ejecutarse en el sistema operativo Windows. SQL Server 2017 CTP 2.1 también ejecuta un sistema operativo basado en Linux. Microsoft también publicó imágenes de Docker que tienen mysql-server preinstalado para contenedores de Linux y Windows. Hablaremos sobre la instalación de mysql-server en un sistema operativo contenedor basado en linux.

Hay algunos requisitos mínimos para usar la imagen de la ventana acoplable microsoft / mssql-server-linux que se enumeran a continuación:

  • Instale Docker Engine 1.8 o superior
  • Mínimo de 4 GB de espacio en disco
  • Mínimo de 4 GB de RAM
  • Debe establecer una contraseña de administrador de mssql segura que debe tener al menos 8 caracteres, incluidas mayúsculas, minúsculas, dígitos de base 10 y / o símbolos no alfanuméricos.

Cómo crear un contenedor Docker mssql-server-linux

Para crear un contenedor docker que tenga mssql-server, tendremos que ejecutar el siguiente comando que descargará microsoft / mssql-server-linux (si aún no está presente en la máquina) y creará un contenedor basado en él.

Antes de eso, te mostraré algunos comandos de la ventana acoplable.

Para comprobar si se está ejecutando algún contenedor de la ventana acoplable:

BANL141cc14d1:~ ngupta9$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

BANL141cc14d1:~ ngupta9$

Significa que no hay ningún contenedor en ejecución en este momento.

Para verificar todos los contenedores en la máquina (no necesariamente en estado de ejecución):

BANL141cc14d1:~ ngupta9$ docker ps -a

CONTAINER ID        IMAGE                                   COMMAND             CREATED             STATUS                    PORTS                                          NAMES

bec19ccd48af        coolnicks/qbdt-dashboard:ubuntu-14.04   "/bin/bash"         12 weeks ago        Exited (0) 12 weeks ago   0.0.0.0:8880->80/tcp, 0.0.0.0:8881->8000/tcp   QBDT-Dashboard

6d0c74506404        ubuntu:14.04                            "/bin/bash"         12 weeks ago        Exited (0) 12 weeks ago                                                  qbdt-dashboard

7b667349c0c3        python:2.7-wheezy                       "python2"           12 weeks ago        Exited (0) 12 weeks ago                                                  python-2.7

22dc8a99c427        coolnicks/ansible:ubuntu1404-nginx      "/bin/bash"         3 months ago        Exited (0) 3 months ago                                                  my_ubuntu_nginx_container

BANL141cc14d1:~ ngupta9$

Esto muestra que hay 4 contenedores presentes en el sistema y en estado de salida. También puede ver la imagen de la ventana acoplable en la que se basan. Más de 1 contenedor se puede basar en una sola imagen de Docker.

Del mismo modo, puede verificar las imágenes de la ventana acoplable presentes en su máquina.

BANL141cc14d1:~ ngupta9$ docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

coolnicks/qbdt-dashboard      ubuntu-14.04        89faaa2ecceb        12 weeks ago        936.1 MB

python                        2.7-wheezy          97f122a59c01        3 months ago        530.6 MB

ubuntu                        14.04               7c09e61e9035        3 months ago        188 MB

coolnicks/ansible             ubuntu1404-nginx    b4dcce787cd4        3 months ago        329 MB

jenkins                       latest              e11ceb27c34e        5 months ago        714.6 MB

ansible/ubuntu14.04-ansible   stable              1526eaefd882        20 months ago       287.4 MB

BANL141cc14d1:~ ngupta9$

Estas son las imágenes presentes en la máquina. La imagen de microsoft / mssql-server-linux aún no está presente. Ejecutaremos el comando para crear un contenedor basado en microsoft / mssql-server-linux. El motor Docker comprobará si esta imagen está presente en la máquina o no. De lo contrario, descargará la imagen en la máquina y creará un contenedor basado en esta imagen. A partir de la próxima vez, no descargará la imagen si desea crear un contenedor mssql-server-linux. Utilizará la imagen ya descargada.

BANL141cc14d1:~ ngupta9$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=@MyMSSQLDocker112' -p 1433:1433 -d microsoft/mssql-server-linux

Unable to find image 'microsoft/mssql-server-linux:latest' locally

latest: Pulling from microsoft/mssql-server-linux

aed15891ba52: Pull complete

773ae8583d14: Pull complete

d1d48771f782: Pull complete

cd3d6cd6c0cf: Pull complete

8ff6f8a9120c: Pull complete

1fd7e8b10447: Pull complete

bd485157db89: Pull complete

273a1970ce9c: Pull complete

67fbf3e59574: Pull complete

4c0c60131530: Pull complete

Digest: sha256:604d27fe5d3d9b4434fb1657e9bf4f2c2bf55ea9bd29dc0cb3660d84bc6f56a8

Status: Downloaded newer image for microsoft/mssql-server-linux:latest

0cebc8c5f887c237007bb099e2e93012ac8a4746b275bf078eb881b027ba2d3c

BANL141cc14d1:~ ngupta9$

BANL141cc14d1:~ ngupta9$ docker images

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE

microsoft/mssql-server-linux   latest              5985832855cf        4 weeks ago         1.382 GB

coolnicks/qbdt-dashboard       ubuntu-14.04        89faaa2ecceb        12 weeks ago        936.1 MB

python                         2.7-wheezy          97f122a59c01        3 months ago        530.6 MB

ubuntu                         14.04               7c09e61e9035        3 months ago        188 MB

coolnicks/ansible              ubuntu1404-nginx    b4dcce787cd4        3 months ago        329 MB

jenkins                        latest              e11ceb27c34e        5 months ago        714.6 MB

ansible/ubuntu14.04-ansible    stable              1526eaefd882        20 months ago       287.4 MB

BANL141cc14d1:~ ngupta9$

BANL141cc14d1:~ ngupta9$ docker ps -a

CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                     PORTS                                          NAMES

0cebc8c5f887        microsoft/mssql-server-linux            "/bin/sh -c /opt/mssq"   5 minutes ago       Exited (1) 5 minutes ago                                                  tender_saha

bec19ccd48af        coolnicks/qbdt-dashboard:ubuntu-14.04   "/bin/bash"              12 weeks ago        Exited (0) 12 weeks ago    0.0.0.0:8880->80/tcp, 0.0.0.0:8881->8000/tcp   QBDT-Dashboard

6d0c74506404        ubuntu:14.04                            "/bin/bash"              12 weeks ago        Exited (0) 12 weeks ago                                                   qbdt-dashboard

7b667349c0c3        python:2.7-wheezy                       "python2"                12 weeks ago        Exited (0) 12 weeks ago                                                   python-2.7

22dc8a99c427        coolnicks/ansible:ubuntu1404-nginx      "/bin/bash"              3 months ago        Exited (0) 3 months ago                                                   my_ubuntu_nginx_container

BANL141cc14d1:~ ngupta9$

Puede ver que descargó la imagen y creó un contenedor con ID de contenedor 0cebc8c5f887c237007bb099e2e93012ac8a4746b275bf078eb881b027ba2d3c or 0cebc8c5f887.

A veces, puede tener un problema en el que obtendrá el error «Este programa requiere una máquina con al menos 3250 megabytes de memoria».

BANL141cc14d1:~ ngupta9$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=@MyMSSQLDocker112' -p 1433:1433 microsoft/mssql-server-linux

sqlservr: This program requires a machine with at least 3250 megabytes of memory.

Por lo tanto, tendrá que asignar ~ 4 GB de RAM al contenedor de la ventana acoplable en la línea de comando. En algunos casos, incluso si está asignando memoria al contenedor de la ventana acoplable, fallará con el mismo error. En ese caso, tendrá que verificar la memoria asignada a Docker y convertirla en 4GB. Generalmente, se ve en Mac (puede cambiar la RAM asignada en la sección de preferencias en la ventana acoplable).

BANL141cc14d1:~ ngupta9$ docker run --memory 4096m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=@MyMSSQLDocker112' -p 1433:1433 -d microsoft/mssql-server-linux

300fb0551542ca1fe9ed0c021980ed3ad61c788ca6dae66147e20598e45e6c07



BANL141cc14d1:~ ngupta9$ docker ps

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES

300fb0551542        microsoft/mssql-server-linux   "/bin/sh -c /opt/mssq"   4 seconds ago       Up 3 seconds        0.0.0.0:1433->1433/tcp   pensive_roentgen

BANL141cc14d1:~ ngupta9$

Ahora puede conectarse con el servidor MsSql que se ejecuta en el contenedor de la ventana acoplable y realizar operaciones de base de datos utilizando los siguientes comandos:

BANL141cc14d1:~ ngupta9$ docker exec -it 300fb0551542 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P @MyMSSQLDocker112

1> SELECT Name from sys.Databases;

2> GO

Name

--------------------------------------------------------------------------------------------------------------------------------

master

tempdb

model

msdb

 

(4 rows affected)

1> CREATE DATABASE testdb;

2> GO

1>

1>

1> USE testdb;

2> GO

Changed database context to 'testdb'.

1>

1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);

2> GO

1> INSERT INTO inventory VALUES (1, 'banana', 150);

2> INSERT INTO inventory VALUES (2, '', 154);

3> GO

 

(1 rows affected)

 

(1 rows affected)

1> SELECT * FROM inventory WHERE quantity > 152;

2> GO

id          name                                               quantity

----------- -------------------------------------------------- -----------

2                                                      154

 

(1 rows affected)

1>

1> SELECT * FROM inventory WHERE quantity > 150;

2> GO

id          name                                               quantity

----------- -------------------------------------------------- -----------

2                                                      154

 

(1 rows affected)

1>

1> SELECT * FROM inventory WHERE quantity > 149;

2> GO

id          name                                               quantity

----------- -------------------------------------------------- -----------

1 banana                                                     150

2                                                      154

 

(2 rows affected)

1> QUIT

BANL141cc14d1:~ ngupta9$

Si desea ingresar al contenedor en modo interactivo y ejecutar el comando, puede hacer lo siguiente:

BANL141cc14d1:~ ngupta9$ docker ps

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES

300fb0551542        microsoft/mssql-server-linux   "/bin/sh -c /opt/mssq"   15 minutes ago      Up 15 minutes       0.0.0.0:1433->1433/tcp   pensive_roentgen

BANL141cc14d1:~ ngupta9$ docker exec -it 300fb0551542 bash

root@300fb0551542:/# pwd

/

root@300fb0551542:/# cd

root@300fb0551542:~# pwd

/root

root@300fb0551542:~# which sqlcmd

root@300fb0551542:~# /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P @MyMSSQLDocker112

1> SELECT Name from sys.Databases;

2> GO

Name

--------------------------------------------------------------------------------------------------------------------------------

master

tempdb

model

msdb

testdb

 

(5 rows affected)

1> QUIT

root@300fb0551542:~#

Conclusión

Microsoft es consciente de que la mayoría de las empresas utilizan sistemas basados ​​en Linux como desarrollo para servidores de producción y muchas están migrando de Windows a Linux si es posible. Por lo tanto, Microsoft también está entrando en el área de Linux y proporciona su software que puede ejecutarse en sistemas basados ​​en Linux y ahora también está probando imágenes de Docker basadas en contenedores de Linux. MsSql para Linux es el producto que se puede ejecutar en sistemas basados ​​en Linux y en contenedores Docker basados ​​en Linux.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar