Partilhar via


Guia de início rápido: executar imagens de contêiner do SQL Server Linux com o Docker

Aplica-se a:SQL Server em Linux

Neste início rápido, você usa o Docker para extrair e executar a imagem de contêiner do Linux do SQL Server 2017 (14.x), mssql-server-linux. Em seguida, você pode se conectar com sqlcmd para criar seu primeiro banco de dados e executar consultas.

Observação

As imagens de contêiner do SQL Server são suportadas apenas em hosts Linux executados em CPUs Intel e AMD x86-64. Ambientes de emulação ou tradução (por exemplo, Rosetta 2, Prism ou QEMU) não são testados ou suportados. Se você quiser criar uma solicitação de recurso ou relatar um problema relacionado ao emulador, visite o repositório oficial do GitHub.

Para obter mais informações sobre plataformas com suporte, consulte Notas de versão do SQL Server 2017 no Linux.

Advertência

Quando para e remove um contentor, apaga permanentemente os dados do SQL Server dentro do contentor. Para obter mais informações sobre como preservar seus dados, crie e copie um arquivo de backup do contêiner ou use uma técnica de persistência de dados de contêiner.

Este guia de início rápido cria contêineres do SQL Server 2017 (14.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

Neste início rápido, você usa o Docker para extrair e executar a imagem de contêiner do Linux do SQL Server 2019 (15.x), mssql-server-linux. Em seguida, você pode se conectar com sqlcmd para criar seu primeiro banco de dados e executar consultas.

Observação

As imagens de contêiner do SQL Server são suportadas apenas em hosts Linux executados em CPUs Intel e AMD x86-64. Ambientes de emulação ou tradução (por exemplo, Rosetta 2, Prism ou QEMU) não são testados ou suportados. Se você quiser criar uma solicitação de recurso ou relatar um problema relacionado ao emulador, visite o repositório oficial do GitHub.

Para obter mais informações sobre plataformas com suporte, consulte Notas de versão do SQL Server 2019 no Linux.

Advertência

Quando para e remove um contentor, apaga permanentemente os dados do SQL Server dentro do contentor. Para obter mais informações sobre como preservar seus dados, crie e copie um arquivo de backup do contêiner ou use uma técnica de persistência de dados de contêiner.

Este guia de início rápido cria contêineres do SQL Server 2019 (15.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

Neste início rápido, você usa o Docker para extrair e executar a imagem de contêiner do Linux do SQL Server 2022 (16.x), mssql-server-linux. Em seguida, você pode se conectar com sqlcmd para criar seu primeiro banco de dados e executar consultas.

Observação

As imagens de contêiner do SQL Server são suportadas apenas em hosts Linux executados em CPUs Intel e AMD x86-64. Ambientes de emulação ou tradução (por exemplo, Rosetta 2, Prism ou QEMU) não são testados ou suportados. Se você quiser criar uma solicitação de recurso ou relatar um problema relacionado ao emulador, visite o repositório oficial do GitHub.

Para obter mais informações sobre plataformas suportadas, consulte Notas de versão do SQL Server 2022 no Linux.

Advertência

Quando para e remove um contentor, apaga permanentemente os dados do SQL Server dentro do contentor. Para obter mais informações sobre como preservar seus dados, crie e copie um arquivo de backup do contêiner ou use uma técnica de persistência de dados de contêiner.

Este início rápido cria contentores do SQL Server 2022 (16.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

Neste quickstart, usas o Docker para puxar e executar a imagem do contentor Linux SQL Server 2025 (17.x), mssql-server-linux. Em seguida, você pode se conectar com sqlcmd para criar seu primeiro banco de dados e executar consultas.

Observação

As imagens de contêiner do SQL Server são suportadas apenas em hosts Linux executados em CPUs Intel e AMD x86-64. Ambientes de emulação ou tradução (por exemplo, Rosetta 2, Prism ou QEMU) não são testados ou suportados. Se você quiser criar uma solicitação de recurso ou relatar um problema relacionado ao emulador, visite o repositório oficial do GitHub.

Para mais informações sobre plataformas suportadas, consulte as notas de lançamento do SQL Server 2025 no Linux.

Advertência

Quando para e remove um contentor, apaga permanentemente os dados do SQL Server dentro do contentor. Para obter mais informações sobre como preservar seus dados, crie e copie um arquivo de backup do contêiner ou use uma técnica de persistência de dados de contêiner.

Este início rápido cria contentores SQL Server 2025 (17.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

Esta imagem consiste no SQL Server a correr em Linux, baseado no Ubuntu. Podes usá-lo com o Docker Engine 1.8+ no Linux.

A partir do SQL Server 2022 (16.x) 14 e do SQL Server 2019 (15.x) 28, as imagens de contêiner incluem o novo pacote mssql-tools18 . O diretório anterior /opt/mssql-tools/bin está sendo eliminado. O novo diretório para ferramentas Microsoft ODBC 18 é /opt/mssql-tools18/bin, alinhando-se com a oferta de ferramentas mais recentes. Para obter mais informações sobre alterações e aprimoramentos de segurança, consulte Driver ODBC 18.0 para SQL Server lançado.

Os exemplos neste artigo usam o comando docker. No entanto, a maioria desses comandos também funciona com o Podman. O Podman fornece uma interface de linha de comando semelhante ao Docker Engine. Você pode descobrir mais sobre Podman.

Importante

sqlcmd atualmente não suporta o parâmetro MSSQL_PID ao criar contêineres. Se você usar as instruções sqlcmd neste início rápido, criará um contêiner com a edição Developer do SQL Server. Use as instruções da interface de linha de comando (CLI) para criar um contêiner usando a licença de sua escolha. Para obter mais informações, consulte Implantar e conectar-se a contêineres Linux do SQL Server.

Pré-requisitos

  • Docker Engine 1.8 ou versões posteriores em qualquer distribuição Linux suportada. Para obter mais informações, consulte Instalar o Docker.

Transfira e execute a imagem do contentor do SQL Server Linux

Antes de iniciar as etapas a seguir, certifique-se de selecionar seu shell preferido (bash, PowerShell ou cmd) na parte superior deste artigo.

Para os comandos bash neste artigo, o sudo comando é utilizado. Se não quiser usar sudo para executar o Docker, você pode configurar um grupo de docker e adicionar usuários a esse grupo. Para obter mais informações, consulte Etapas pós-instalação para Linux.

Puxe a imagem do contêiner do registro

Extraia a imagem do contêiner Linux do SQL Server 2017 (14.x) do Registro de contêiner da Microsoft.

sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
docker pull mcr.microsoft.com/mssql/server:2017-latest
docker pull mcr.microsoft.com/mssql/server:2017-latest

Este guia de início rápido cria contêineres do SQL Server 2017 (14.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

O comando anterior extrai a imagem de contêiner Linux mais recente do SQL Server 2017 (14.x). Para puxar uma imagem específica, adicione dois pontos e o nome da etiqueta, como mcr.microsoft.com/mssql/server:2017-GA-ubuntu. Para ver todas as imagens disponíveis, consulte o Microsoft Artifact Registry.

Executar o contêiner

Para executar a imagem do contentor Linux com o Docker, use o seguinte comando de um shell bash ou do prompt de comandos PowerShell elevado.

Importante

A variável de ambiente SA_PASSWORD foi preterida. Use MSSQL_SA_PASSWORD em vez disso.

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2017-latest

Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2017-latest

Atenção

A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível. Se você não seguir esses requisitos de senha, o contêiner não poderá configurar o SQL Server e parará de funcionar. Você pode examinar o log de erros usando o comando docker logs.

Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é ligeiramente diferente. Para obter mais informações, consulte Executar imagens de contêiner de produção.

A tabela a seguir fornece uma descrição dos parâmetros no exemplo docker run anterior:

Parâmetro Descrição
-e "ACCEPT_EULA=Y" Defina a variável ACCEPT_EULA para qualquer valor para confirmar sua aceitação do Contrato de Licença de End-User. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_SA_PASSWORD=<password>" Especifique a sua própria palavra-passe forte com pelo menos oito caracteres e que cumpra a política de Palavra-passe. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Especifique um agrupamento personalizado do SQL Server, em vez do SQL_Latin1_General_CP1_CI_ASpadrão .
-p 1433:1433 Mapeie uma porta TCP no ambiente host (primeiro valor) com uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando no TCP 1433 no contêiner e essa porta de contêiner é exposta à porta TCP 1433 no host.
--name sql1 Especifique um nome personalizado para o contêiner em vez de um gerado aleatoriamente. Se você executar mais de um contêiner, não poderá reutilizar esse mesmo nome.
--hostname sql1 Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será o ID do contêiner, que é um GUID do sistema gerado aleatoriamente.
-d Execute o contêiner em segundo plano (daemon).
mcr.microsoft.com/mssql/server:2017-latest A imagem do contêiner do SQL Server Linux.

Ver lista de contentores

  1. Para exibir seus contêineres do Docker, use o comando docker ps.

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    A saída é semelhante ao exemplo a seguir:

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2017-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Se a coluna STATUS mostrar um status de Up, então o SQL Server está a ser executado no contentor e a escutar na porta especificada na coluna PORTS. Se a STATUS coluna do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker. O servidor está pronto para conexões assim que os logs de erro do SQL Server exibirem a mensagem: SQL Server is now ready for client connections. This is an informational message; no user action is required. Você pode revisar o log de erros do SQL Server dentro do contêiner usando o comando:

    sudo docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    O parâmetro --hostname, conforme discutido anteriormente, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome que você vê retornado na seguinte consulta Transact-SQL:

    SELECT @@SERVERNAME,
           SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
           SERVERPROPERTY('MachineName'),
           SERVERPROPERTY('ServerName');
    

    Definir --hostname e --name com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.

  3. Como etapa final, altere sua senha SA em um ambiente de produção, pois a MSSQL_SA_PASSWORD é visível na ps -eax saída e armazenada na variável de ambiente de mesmo nome.

Transfira e execute a imagem do contentor do SQL Server Linux

Antes de iniciar as etapas a seguir, certifique-se de selecionar seu shell preferido (bash, PowerShell ou cmd) na parte superior deste artigo.

Para os comandos bash neste artigo, o sudo comando é utilizado. Se não quiser usar sudo para executar o Docker, você pode configurar um grupo de docker e adicionar usuários a esse grupo. Para obter mais informações, consulte Etapas pós-instalação para Linux.

Puxe o contêiner do registro

Puxe a imagem do contêiner Linux do SQL Server 2019 (15.x) do Registro de Contêiner da Microsoft.

docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull mcr.microsoft.com/mssql/server:2019-latest

Este guia de início rápido cria contêineres do SQL Server 2019 (15.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

O comando anterior extrai a imagem de contêiner Linux mais recente do SQL Server 2019 (15.x). Para puxar uma imagem específica, adicione dois pontos e o nome da etiqueta, como mcr.microsoft.com/mssql/server:2019-GA-ubuntu. Para ver todas as imagens disponíveis, consulte o Microsoft Artifact Registry.

Executar o contêiner

Para executar a imagem do contentor Linux com o Docker, use o seguinte comando de um shell bash ou do prompt de comandos PowerShell elevado.

Importante

A variável de ambiente SA_PASSWORD foi preterida. Use MSSQL_SA_PASSWORD em vez disso.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2019-latest

Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest

Atenção

A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest

Atenção

A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível. Se você não seguir esses requisitos de senha, o contêiner não poderá configurar o SQL Server e parará de funcionar. Você pode examinar o log de erros usando o comando docker logs.

Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é ligeiramente diferente. Para obter mais informações, consulte Executar imagens de contêiner de produção.

A tabela a seguir fornece uma descrição dos parâmetros no exemplo docker run anterior:

Parâmetro Descrição
-e "ACCEPT_EULA=Y" Defina a variável ACCEPT_EULA para qualquer valor para confirmar sua aceitação do Contrato de Licença de End-User. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_SA_PASSWORD=<password>" Especifique a sua própria palavra-passe forte com pelo menos oito caracteres e que cumpra a política de Palavra-passe. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Especifique um agrupamento personalizado do SQL Server, em vez do SQL_Latin1_General_CP1_CI_ASpadrão .
-p 1433:1433 Mapeie uma porta TCP no ambiente host (primeiro valor) com uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando no TCP 1433 no contêiner e essa porta de contêiner é exposta à porta TCP 1433 no host.
--name sql1 Especifique um nome personalizado para o contêiner em vez de um gerado aleatoriamente. Se você executar mais de um contêiner, não poderá reutilizar esse mesmo nome.
--hostname sql1 Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será o ID do contêiner, que é um GUID do sistema gerado aleatoriamente.
-d Execute o contêiner em segundo plano (daemon).
mcr.microsoft.com/mssql/server:2019-latest A imagem do contêiner do SQL Server Linux.

Ver lista de contentores

  1. Para exibir seus contêineres do Docker, use o comando docker ps.

    docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    A saída é semelhante ao exemplo a seguir:

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2019-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Se a coluna STATUS mostrar um status de Up, então o SQL Server está a ser executado no contentor e a escutar na porta especificada na coluna PORTS. Se a STATUS coluna do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker. O servidor está pronto para conexões assim que os logs de erro do SQL Server exibirem a mensagem: SQL Server is now ready for client connections. This is an informational message; no user action is required. Você pode revisar o log de erros do SQL Server dentro do contêiner usando o comando:

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    O parâmetro --hostname, conforme discutido anteriormente, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome que você vê retornado na seguinte consulta Transact-SQL:

    SELECT @@SERVERNAME,
           SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
           SERVERPROPERTY('MachineName'),
           SERVERPROPERTY('ServerName');
    

    Definir --hostname e --name com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.

  3. Como etapa final, altere sua senha SA em um ambiente de produção, pois a MSSQL_SA_PASSWORD é visível na ps -eax saída e armazenada na variável de ambiente de mesmo nome.

Transfira e execute a imagem do contentor do SQL Server Linux

Antes de iniciar as etapas a seguir, certifique-se de selecionar seu shell preferido (bash, PowerShell ou cmd) na parte superior deste artigo.

Para os comandos bash neste artigo, o sudo comando é utilizado. Se não quiser usar sudo para executar o Docker, você pode configurar um grupo de docker e adicionar usuários a esse grupo. Para obter mais informações, consulte Etapas pós-instalação para Linux.

Puxe a imagem do contêiner do registro

Extraia a imagem do contêiner Linux do SQL Server 2022 (16.x) do Registro de contêiner da Microsoft.

docker pull mcr.microsoft.com/mssql/server:2022-latest
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker pull mcr.microsoft.com/mssql/server:2022-latest

Este início rápido cria contentores do SQL Server 2022 (16.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

O comando anterior extrai a imagem de contêiner Linux mais recente do SQL Server 2022 (16.x). Para puxar uma imagem específica, adicione dois pontos e o nome da etiqueta, como mcr.microsoft.com/mssql/server:2022-GA-ubuntu. Para ver todas as imagens disponíveis, consulte o Microsoft Artifact Registry.

Executar o contêiner

Para executar a imagem do contentor Linux com o Docker, use o seguinte comando de um shell bash ou do prompt de comandos PowerShell elevado.

Importante

A variável de ambiente SA_PASSWORD foi preterida. Use MSSQL_SA_PASSWORD em vez disso.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2022-latest

Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2022-latest

Atenção

A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível. Se você não seguir esses requisitos de senha, o contêiner não poderá configurar o SQL Server e parará de funcionar. Você pode examinar o log de erros usando o comando docker logs.

Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é ligeiramente diferente. Para obter mais informações, consulte Executar imagens de contêiner de produção.

A tabela a seguir fornece uma descrição dos parâmetros no exemplo docker run anterior:

Parâmetro Descrição
-e "ACCEPT_EULA=Y" Defina a variável ACCEPT_EULA para qualquer valor para confirmar sua aceitação do Contrato de Licença de End-User. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_SA_PASSWORD=<password>" Especifique a sua própria palavra-passe forte com pelo menos oito caracteres e que cumpra a política de Palavra-passe. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Especifique um agrupamento personalizado do SQL Server, em vez do SQL_Latin1_General_CP1_CI_ASpadrão .
-p 1433:1433 Mapeie uma porta TCP no ambiente host (primeiro valor) com uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando no TCP 1433 no contêiner e essa porta de contêiner é exposta à porta TCP 1433 no host.
--name sql1 Especifique um nome personalizado para o contêiner em vez de um gerado aleatoriamente. Se você executar mais de um contêiner, não poderá reutilizar esse mesmo nome.
--hostname sql1 Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será o ID do contêiner, que é um GUID do sistema gerado aleatoriamente.
-d Execute o contêiner em segundo plano (daemon).
mcr.microsoft.com/mssql/server:2022-latest A imagem do contêiner do SQL Server Linux.

Alterar a palavra-passe do administrador do sistema

A conta de administrador do sistema (sa) é criada na instância do SQL Server durante o processo de configuração. Depois de criares o teu contentor SQL Server, corre echo $MSSQL_SA_PASSWORD dentro dele para descobrir a MSSQL_SA_PASSWORD variável de ambiente que especificaste. Por motivos de segurança, você deve alterar sua senha de sa em um ambiente de produção.

  1. Escolha uma senha forte para usar na conta sa. A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

  2. Use docker exec para executar sqlcmd para alterar a senha usando Transact-SQL. No exemplo a seguir, as senhas antiga e nova são lidas a partir da entrada do usuário.

    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
    -S localhost -U sa \
     -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
     -Q "ALTER LOGIN sa WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
    
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U sa -P "<password>" `
       -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"
    
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U sa -P "<password>" `
       -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    As versões recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre criptografia de conexão, consulte utilitário sqlcmd para Windows e Conectando-se com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No a sqlcmd para especificar que a criptografia é opcional, não obrigatória.

Desative a conta SA como prática recomendada

Importante

Precisa destas credenciais para passos posteriores. Certifique-se de anotar o ID de usuário e senha que você insere aqui.

Quando você se conecta à sua instância do SQL Server usando a conta de administrador do sistema (sa) pela primeira vez após a instalação, é importante seguir estas etapas e, em seguida, desativar imediatamente a conta sa como uma prática recomendada de segurança.

  1. Crie um novo login e torne-o membro da função de servidor sysadmin .

  2. Conecte-se à instância do SQL Server usando o novo logon que você criou.

  3. Desative a conta sa, conforme recomendado para as práticas recomendadas de segurança.

Ver lista de contentores

  1. Para exibir seus contêineres do Docker, use o comando docker ps.

    docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    A saída é semelhante ao exemplo a seguir:

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2022-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Se a coluna STATUS mostrar um status de Up, então o SQL Server está a ser executado no contentor e a escutar na porta especificada na coluna PORTS. Se a STATUS coluna do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker. O servidor está pronto para conexões assim que os logs de erro do SQL Server exibirem a mensagem: SQL Server is now ready for client connections. This is an informational message; no user action is required. Você pode revisar o log de erros do SQL Server dentro do contêiner usando o comando:

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    O parâmetro --hostname, conforme discutido anteriormente, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome que você vê retornado na seguinte consulta Transact-SQL:

    SELECT @@SERVERNAME,
           SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
           SERVERPROPERTY('MachineName'),
           SERVERPROPERTY('ServerName');
    

    Definir --hostname e --name com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.

Transfira e execute a imagem do contentor do SQL Server Linux

Antes de iniciar as etapas a seguir, certifique-se de selecionar seu shell preferido (bash, PowerShell ou cmd) na parte superior deste artigo.

Para os comandos bash neste artigo, o sudo comando é utilizado. Se não quiser usar sudo para executar o Docker, você pode configurar um grupo de docker e adicionar usuários a esse grupo. Para obter mais informações, consulte Etapas pós-instalação para Linux.

Puxe a imagem do contêiner do registro

Extrai a imagem do contentor SQL Server 2025 (17.x) Linux do Microsoft Container Registry.

docker pull mcr.microsoft.com/mssql/server:2025-latest
docker pull mcr.microsoft.com/mssql/server:2025-latest
docker pull mcr.microsoft.com/mssql/server:2025-latest

Este início rápido cria contentores SQL Server 2025 (17.x). Se preferir criar contêineres Linux para diferentes versões do SQL Server, consulte:

O comando anterior puxa a imagem mais recente do contentor Linux SQL Server 2025 (17.x). Para puxar uma imagem específica, adicione dois pontos e o nome da etiqueta, como mcr.microsoft.com/mssql/server:2025-GA-ubuntu. Para ver todas as imagens disponíveis, consulte o Microsoft Artifact Registry.

Executar o contêiner

Para executar a imagem do contentor Linux com o Docker, use o seguinte comando de um shell bash ou do prompt de comandos PowerShell elevado.

Importante

A variável de ambiente SA_PASSWORD foi preterida. Use MSSQL_SA_PASSWORD em vez disso.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2025-latest

Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2025-latest

Atenção

A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível. Se você não seguir esses requisitos de senha, o contêiner não poderá configurar o SQL Server e parará de funcionar. Você pode examinar o log de erros usando o comando docker logs.

Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é ligeiramente diferente. Para obter mais informações, consulte Executar imagens de contêiner de produção.

A tabela a seguir fornece uma descrição dos parâmetros no exemplo docker run anterior:

Parâmetro Descrição
-e "ACCEPT_EULA=Y" Defina a variável ACCEPT_EULA para qualquer valor para confirmar sua aceitação do Contrato de Licença de End-User. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_SA_PASSWORD=<password>" Especifique a sua própria palavra-passe forte com pelo menos oito caracteres e que cumpra a política de Palavra-passe. Configuração necessária para a imagem do SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Especifique um agrupamento personalizado do SQL Server, em vez do SQL_Latin1_General_CP1_CI_ASpadrão .
-p 1433:1433 Mapeie uma porta TCP no ambiente host (primeiro valor) com uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando no TCP 1433 no contêiner e essa porta de contêiner é exposta à porta TCP 1433 no host.
--name sql1 Especifique um nome personalizado para o contêiner em vez de um gerado aleatoriamente. Se você executar mais de um contêiner, não poderá reutilizar esse mesmo nome.
--hostname sql1 Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será o ID do contêiner, que é um GUID do sistema gerado aleatoriamente.
-d Execute o contêiner em segundo plano (daemon).
mcr.microsoft.com/mssql/server:2025-latest A imagem do contêiner do SQL Server Linux.

Alterar a palavra-passe do administrador do sistema

A conta de administrador do sistema (sa) é criada na instância do SQL Server durante o processo de configuração. Depois de criares o teu contentor SQL Server, corre echo $MSSQL_SA_PASSWORD dentro dele para descobrir a MSSQL_SA_PASSWORD variável de ambiente que especificaste. Por motivos de segurança, você deve alterar sua senha de sa em um ambiente de produção.

  1. Escolha uma senha forte para usar na conta sa. A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

  2. Use docker exec para executar sqlcmd para alterar a senha usando Transact-SQL. No exemplo a seguir, as senhas antiga e nova são lidas a partir da entrada do usuário.

    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
    -S localhost -U sa \
     -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
     -Q "ALTER LOGIN sa WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
    
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U sa -P "<password>" `
       -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"
    
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U sa -P "<password>" `
       -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    As versões recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre criptografia de conexão, consulte utilitário sqlcmd para Windows e Conectando-se com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No a sqlcmd para especificar que a criptografia é opcional, não obrigatória.

Desative a conta SA como prática recomendada

Importante

Precisa destas credenciais para passos posteriores. Certifique-se de anotar o ID de usuário e senha que você insere aqui.

Quando você se conecta à sua instância do SQL Server usando a conta de administrador do sistema (sa) pela primeira vez após a instalação, é importante seguir estas etapas e, em seguida, desativar imediatamente a conta sa como uma prática recomendada de segurança.

  1. Crie um novo login e torne-o membro da função de servidor sysadmin .

  2. Conecte-se à instância do SQL Server usando o novo logon que você criou.

  3. Desative a conta sa, conforme recomendado para as práticas recomendadas de segurança.

Ver lista de contentores

  1. Para exibir seus contêineres do Docker, use o comando docker ps.

    docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    A saída é semelhante ao exemplo a seguir:

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2025-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Se a coluna STATUS mostrar um status de Up, então o SQL Server está a ser executado no contentor e a escutar na porta especificada na coluna PORTS. Se a STATUS coluna do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker. O servidor está pronto para conexões assim que os logs de erro do SQL Server exibirem a mensagem: SQL Server is now ready for client connections. This is an informational message; no user action is required. Você pode revisar o log de erros do SQL Server dentro do contêiner usando o comando:

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    O parâmetro --hostname, conforme discutido anteriormente, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome que você vê retornado na seguinte consulta Transact-SQL:

    SELECT @@SERVERNAME,
           SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
           SERVERPROPERTY('MachineName'),
           SERVERPROPERTY('ServerName');
    

    Definir --hostname e --name com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.

Conectar-se ao SQL Server

As etapas a seguir usam a ferramenta de linha de comando do SQL Server, utilitário sqlcmd, dentro do contêiner para se conectar ao SQL Server.

  1. Use o comando docker exec -it para iniciar um shell bash interativo dentro do contêiner em execução. No exemplo a seguir, sql1 é o nome especificado pelo parâmetro --name quando você criou o contêiner.

    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
  1. Uma vez dentro do contêiner, conecte-se localmente com o sqlcmd, usando seu caminho completo.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid> -P "<password>"
    

    As versões recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre criptografia de conexão, consulte utilitário sqlcmd para Windows e Conectando-se com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No a sqlcmd para especificar que a criptografia é opcional, não obrigatória.

    Você pode omitir a senha na linha de comando para que seja solicitado a inseri-la. Por exemplo:

    /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
    
  1. Uma vez dentro do contêiner, conecte-se localmente com o sqlcmd, usando seu caminho completo.

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<password>"
    

    As versões recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre criptografia de conexão, consulte utilitário sqlcmd para Windows e Conectando-se com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No a sqlcmd para especificar que a criptografia é opcional, não obrigatória.

    Você pode omitir a senha na linha de comando para que seja solicitado a inseri-la. Por exemplo:

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
    
  1. Se for bem-sucedido, chega ao prompt de comandos sqlcmd : 1>.

Criar e consultar dados

As secções seguintes mostram-lhe como usar sqlcmd e Transact-SQL para criar uma nova base de dados, adicionar dados e executar uma consulta.

Criar uma nova base de dados

As etapas a seguir criam um novo banco de dados chamado TestDB.

  1. No prompt de comando sqlcmd , cole o seguinte comando Transact-SQL para criar um banco de dados de teste:

    CREATE DATABASE TestDB;
    
  2. Na próxima linha, escreva uma consulta para retornar o nome de todos os bancos de dados no servidor:

    SELECT name
    FROM sys.databases;
    
  3. Os dois comandos anteriores não são executados imediatamente. Digite GO em uma nova linha para executar os comandos anteriores:

    GO
    

Inserir dados

De seguida, cria uma nova tabela com o nome Inventory e insere duas novas linhas.

  1. No prompt de comando sqlcmd, alterne o contexto para a nova TestDB base de dados:

    USE TestDB;
    
  2. Crie uma nova tabela chamada Inventory:

    CREATE TABLE Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT
    );
    
  3. Insira dados na nova tabela:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Digite GO para executar os comandos anteriores:

    GO
    

Selecionar dados

Agora, execute uma consulta para retornar dados da tabela Inventory.

  1. No prompt de comando sqlcmd , insira uma consulta que retorne linhas da Inventory tabela em que a quantidade é maior que 152:

    SELECT *
    FROM Inventory
    WHERE quantity > 152;
    
  2. Execute o comando:

    GO
    

Saia do prompt de comando sqlcmd

  1. Para encerrar sua sessão de sqlcmd, digite :

    QUIT
    
  2. Para sair do prompt de comando interativo em seu contêiner, digite exit. Seu contêiner continua a ser executado depois que você sai do shell bash interativo.

Conecte-se de fora do contêiner

Pode ligar-se à instância SQL Server na sua máquina Docker a partir de qualquer ferramenta externa Linux, Windows ou macOS que suporte ligações SQL. A ferramenta externa usa o endereço IP da máquina host.

As etapas a seguir usam sqlcmd fora do container para se conectar ao SQL Server em execução no container. Essas etapas pressupõem que você já tenha as ferramentas de linha de comando do SQL Server instaladas fora do contêiner. Os mesmos princípios se aplicam ao usar outras ferramentas, mas o processo de conexão é exclusivo para cada ferramenta.

  1. Encontre o endereço IP da máquina host do contêiner, usando ifconfig ou ip addr.

  2. Para este exemplo, instale a ferramenta sqlcmd em sua máquina cliente. Para obter mais informações, consulte utilitário sqlcmd ou Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux.

  3. Execute sqlcmd especificando o endereço IP e a porta mapeada para a porta 1433 em seu contêiner. Neste exemplo, a porta é a mesma que a porta 1433 na máquina host. Se especificaste uma porta mapeada diferente na máquina anfitriã, usa-a aqui. Você também precisa abrir a porta de entrada apropriada no firewall para permitir a conexão.

    As versões recentes do sqlcmd são seguras por padrão. Se a ligação não resultar e estiveres a usar a versão 18 ou superior, adiciona a -No opção ao sqlcmd para especificar que a encriptação é opcional, não obrigatória.

    sudo sqlcmd -S <ip_address>,1433 -U <userid> -P "<password>"
    
    sqlcmd -S <ip_address>,1433 -U <userid> -P "<password>"
    
    sqlcmd -S <ip_address>,1433 -U <userid> -P "<password>"
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

  4. Executar comandos Transact-SQL. Quando terminar, digite QUIT.

Outras ferramentas comuns para se conectar ao SQL Server incluem:

Por favor, remova o recipiente

Se desejar remover o contêiner do SQL Server usado neste tutorial, execute os seguintes comandos:

docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1

Demonstração do Docker

Depois de terminar de usar a imagem de contêiner do SQL Server Linux para o Docker, convém saber como o Docker é usado para melhorar o desenvolvimento e o teste. O vídeo a seguir mostra como o Docker pode ser usado em um cenário de integração e implantação contínua.

 

Contribuir para a documentação de SQL

Você sabia que você mesmo pode editar conteúdo SQL? Se o fizer, não só ajudará a melhorar a nossa documentação, como também será creditado como contribuidor da página.

Para obter mais informações, consulte Editar a documentação do Microsoft Learn.