Docker - Executando o SQL Server em um Contêiner no Linux

 Neste artigo veremos como executar o SQL Server em um Contêiner Docker no ambiente Linux.

Se você ainda não sabia o Microsoft SQL Server é suportado no ambiente Linux no Ubuntu, SUSE Linux Enterprise Server (SLES) e Red Hat Enterprise Linux (RHEL). Ele também tem suporte como uma imagem do Docker, que pode ser executado no mecanismo do Docker no Linux ou no Docker para Windows ou Mac.

Para o SQL Server 2017 os requisitos mínimos para Linux são:

Memória  2 GB
Sistema de Arquivos  XFS ou EXT4 (outros sistemas de arquivos, como BTRFS, não têm suporte)
Espaço em disco  6 GB
Velocidade do processador  2 GHz
Núcleos de processador  2 núcleos
Tipo de processador  compatível com x64 somente

Assim você pode instalar o SQL Server no Linux; veja neste link as instruções para instalar no Ubuntu.

Neste primeiro contato com o SQL Server no ambiente Linux veremos como executar este banco de dados em um contêiner Docker usando a ferramenta sqlcmd para realizar algumas tarefas no SQL Server.

O ambiente Linux usado foi o seguinte:

  1. Linux - (Distribuição Ubuntu LTS 18.04 Bionic Beaver)
  2. Docker
  3. .NET Core SDK 2.1

Todos esses recursos são gratuítos e são multiplataforma, e, a instalação em geral é bem simples.

Nota: Se você não conhece o Docker acompanhe a série de artigos : Introdução básica ao Docker

Baixando a imagem do SQL Server e criando o Contêiner

Vamos iniciar baixando a imagem do SQL Server que iremos executar no contêiner.

Obs: As informações foram obtidas em : Guia de Início rápido: Imagens de contêiner executar o SQL Server no Docker

As imagens para o SQL Server podem ser obtidas a partir do repositório Docker hub neste link: https://hub.docker.com/r/microsoft/mssql-server-linux/

Uma nova página contendo as imagens oficiais para o Microsoft SQL Server no Linux para Docker também esta disponível neste link: https://hub.docker.com/r/microsoft/mssql-server

Abra um terminal de comandos no Linux e digite o comando :  

docker pull microsoft/mssql-server-linux:2017-latest

Ao final a imagem será baixada no seu repositório local:

Para visualizar informações da imagem digite no terminal o comando: docker image ls ou docker images

Vemos a imagem baixada com um tamanho de 1.35 GB.

Vamos agora criar um contêiner Docker para poder executar o MS SQL Server.

No terminal de comandos digite (em uma única linha) :

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Numsey@Password!' -p 1401:1433 -d
--name=mac_sql microsoft/mssql-server-linux:2017-latest

Destrinchando o comando temos que:

docker run Cria e executa o contêiner Docker
-e 'ACCEPT_EULA=Y' Aceita os termos de licença da Microsoft
-e 'SA_PASSWORD=Numsey@Password!' Define uma senha para o usuário SA
-p 1401:1433 mapeia a porta 1433 do contêiner para porta 1401 do host
-d Executa o contêiner em segundo plano
--name=mac_sql Define o nome do contêiner
microsoft/mssql-server-linux:2017-latest Nome da imagem usada para criar o contêiner

Nota:  Por padrão o MS SQL Server escuta na porta 1433

Ao executar o comando será criado o contêiner que fica em execução em segundo plano.

Para obter informações do contêiner criado digite no terminal:   docker container ps

Vemos o contêiner mac_sql criado a partir da imagem do MS SQL Server pronto para ser usado, e, agora podemos acessar o MS SQL Server no contêiner.

Vamos entrar no contêiner e acessar o SQL Server.

Digite o seguinte comando no terminal:

docker exec -it mac_sql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa

Destrinchando o comando:

docker exec  Executa um comando no contêiner em execução
-it  Usa o modo iterativo e anexa um terminal
mac_sql  Nome do contêiner
/opt/mssql-tools/bin/sqlcmd  Caminho da ferramenta de linha de comando sqlcmd no contêiner
-S localhost  Servidor localhost
-U sa  Usuário sa

Será solicitado para você informar a senha que foi definida na criação do contêiner :  Numsey@Password! (lemgra!)

Vemos então aparecer prompt de comandos do sqlcmd : 1>

Podemos agora usar comandos Transact-SQL para testar o acesso ao MS SQL Server.

Digite:

1> SELECT @@VERSION
2> GO

Ao teclar Enter teremos o seguinte resultado:

Agora vamos criar um banco de dados e a seguir exibir os nomes de todos os bancos de dados no servidor usando os seguintes comandos Transct-SQL:

1> CREATE DATABASE TesteDB
2> SELECT Name from sys.Databases
3> GO

Vemos que o banco de dados TesteDB foi criado.

Vamos criar uma tabela chamada Produtos neste banco de dados com 3 campos:

  • id   -  tipo  int
  • nome  - tipo nvarchar(50)
  • quantidade - int

A instrução SQL usada será:

CREATE TABLE Produtos(id INT, nome NVARCHAR(50), quantidade INT)

A seguir vamos incluir dois produtos na tabela Produtos usando o comando INSERT INTO:

INSERT INTO Produtos VALUES (1, 'manga', 10); 
INSERT INTO Produtos VALUES (2, 'abacate', 15);
Para isso digite os comandos na linha de comando sqlcmd no contêiner:

Para exibir os dados da tabela Produtos digite o comando abaixo no prompt do sqlcmd no contêiner:

SELECT * FROM Produtos WHERE quantidade > 5;
GO

Temos a exibição dos dados incluídos via comandos SQL usando a ferramenta sqlcmd.

 

Para sair digite QUIT.

 

Podemos acessar o contêiner via SQL Server Management Studio informando em Server name o servidor: localhost e a porta 1401, e , as credenciais de acesso nos campos Login e Password.


Ficaria assim :
 


 

Existe também uma ferramenta chamada SQL Operations Studio que pode ser usada para testar o acesso no MS SQL Server no contêiner.

Dessa forma acessamos o SQL Server em um contêiner Docker no ambiente Linux.

Para parar e remover o contêiner podemos usar os seguintes comandos no terminal:

sudo docker container stop mac_sql
sudo docker container rm mac_sql

Em um próximo artigos vamos continuar a mostrar como usar o SQL Server no Linux.

Nota: Acompanhe a introdução ao Docker nesta série de artigos sobre o assunto.

"Eu sou o Alfa e o Ômega, o princípio e o fim, diz o Senhor, que é, e que era, e que há de vir, o Todo-Poderoso. "
Apocalipse 1:8

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti