Avvio rapido: Eseguire immagini del contenitore di SQL Server in Linux con Docker
Si applica a:SQL Server - Linux
In questa guida di avvio rapido si userà Docker per effettuare il pull ed eseguire l'immagine del contenitore di SQL Server 2017 (14.x) in Linux, mssql-server-linux. Sarà quindi possibile connettersi con sqlcmd per creare il primo database ed eseguire query.
Per altre informazioni sulle piattaforme supportate, vedere Note sulla versione per SQL Server 2017 in Linux.
Suggerimento
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2017 (14.x). Se si preferisce creare contenitori Linux per versioni diverse di SQL Server, vedere le versioni SQL Server 2019 (15.x) o SQL Server 2022 (16.x) di questo articolo.
In questa guida di avvio rapido si userà Docker per effettuare il pull ed eseguire l'immagine del contenitore di SQL Server 2019 (15.x) in Linux, mssql-server-linux. Sarà quindi possibile connettersi con sqlcmd per creare il primo database ed eseguire query.
Per altre informazioni sulle piattaforme supportate, vedere Note sulla versione per SQL Server 2019 in Linux.
Suggerimento
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2019 (15.x). Se si preferisce creare contenitori Linux per versioni diverse di SQL Server, vedere le versioni SQL Server 2017 (14.x) o SQL Server 2022 (16.x) di questo articolo.
In questa guida introduttiva si userà Docker per eseguire il pull ed eseguire l'immagine del contenitore Linux SQL Server 2022 (16.x) Linux, mssql-server-linux. Sarà quindi possibile connettersi con sqlcmd per creare il primo database ed eseguire query.
Per altre informazioni sulle piattaforme supportate, vedere Note sulla versione per SQL Server 2022 (16.x) in Linux.
Suggerimento
Questa guida introduttiva crea SQL Server contenitori 2022 (16.x). Se si preferisce creare contenitori Linux per versioni diverse di SQL Server, vedere le versioni SQL Server 2017 (14.x) o SQL Server 2019 (15.x) di questo articolo.
Questa immagine è costituita da SQL Server in esecuzione su Linux basato su Ubuntu 20.04. Può essere usata con il motore Docker 1.8 o versioni successive su Linux.
Gli esempi riportati in questo articolo usano il comando docker
. La maggior parte di questi comandi funziona tuttavia anche con Podman. Podman offre un'interfaccia della riga di comando simile al motore Docker. È possibile trovare altre informazioni su Podman qui.
Prerequisiti
Motore Docker 1.8 o versioni successive in qualsiasi distribuzione di Linux. Per altre informazioni, vedere Installare Docker.
Per altre informazioni sui requisiti hardware e sul supporto del processore, vedere:
Driver di archiviazione
overlay2
Docker. Si tratta del driver predefinito per la maggior parte degli utenti. Se non si sta usando questo provider di archiviazione ed è necessario cambiarlo, vedere le istruzioni e gli avvisi nella documentazione di Docker per la configurazione di overlay2.Almeno 2 GB di spazio su disco.
Almeno 2 GB di RAM.
Effettuare il pull ed eseguire l'immagine del contenitore di SQL Server in Linux
Prima di iniziare la procedura seguente, assicurarsi di aver selezionato la shell preferita (Bash, PowerShell o cmd) all'inizio di questo articolo.
Eseguire il pull dell'immagine del contenitore di SQL Server 2017 (14.x) in Linux dal Registro Container 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
Suggerimento
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2017 (14.x). Se si preferisce creare contenitori Linux per versioni diverse di SQL Server, vedere le versioni SQL Server 2019 (15.x) o SQL Server 2022 (16.x) di questo articolo.
Il comando riportato sopra esegue il pull dell'immagine del contenitore di SQL Server 2017 (14.x) in Linux più recente. Se si vuole eseguire il pull di un'immagine specifica, aggiungere un segno di due punti e il nome del tag, ad esempio
mcr.microsoft.com/mssql/server:2017-GA-ubuntu
. Per visualizzare tutte le immagini disponibili, vedere la pagina dell'hub Docker su mssql-server.Per i comandi Bash in questo articolo, si usa
sudo
. Se non si vuole usaresudo
per eseguire Docker, è possibile configurare un gruppodocker
e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).Per eseguire l'immagine del contenitore Linux con Docker, è possibile usare il comando seguente da una shell Bash o da un prompt dei comandi PowerShell con privilegi elevati.
Importante
La variabile di ambiente
SA_PASSWORD
è deprecata. Usare inveceMSSQL_SA_PASSWORD
.sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2017-latest
Nota
Se si usa PowerShell Core, sostituire le virgolette doppie con virgolette singole.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" ` -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=<YourStrong@Passw0rd>" ` -p 1433:1433 --name sql1 --hostname sql1 ` -d ` mcr.microsoft.com/mssql/server:2017-latest
La password deve essere conforme ai criteri password predefiniti di SQL Server, altrimenti il contenitore non potrà configurare SQL Server e smetterà di funzionare. Per impostazione predefinita, la password deve essere composta da almeno otto caratteri e contenere caratteri di tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, cifre in base 10 e simboli. È possibile esaminare il log degli errori mediante il comando
docker logs
.Per impostazione predefinita, in questa guida di avvio rapido viene creato un contenitore con l'edizione Developer di SQL Server. Il processo di esecuzione delle edizioni di produzione nei contenitori è leggermente diverso. Per altre informazioni, vedere Run production container images (Eseguire immagini del contenitore di produzione).
La tabella seguente offre una descrizione dei parametri dell'esempio
docker run
precedente:Parametro Descrizione -e "ACCEPT_EULA=Y" Impostare la variabile ACCEPT_EULA
su un valore qualsiasi per confermare l'accettazione del contratto di licenza con l'utente finale. Impostazione obbligatoria per l'immagine di SQL Server.-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" Specificare la password complessa composta da almeno otto caratteri e conforme ai requisiti per le password di SQL Server. Impostazione obbligatoria per l'immagine di SQL Server. -e "MSSQL_COLLATION=<SQL_Server_collation>" Specificare le regole di confronto personalizzate SQL Server anziché il valore predefinito SQL_Latin1_General_CP1_CI_AS
.-p 1433:1433 Eseguire il mapping di una porta TCP nell'ambiente host (primo valore) con una porta TCP nel contenitore (secondo valore). In questo esempio SQL Server è in ascolto sulla porta TCP 1433 del contenitore e la porta del contenitore è a sua volta esposta alla porta 1433 nell'host. --name sql1 Specificare un nome personalizzato per il contenitore, invece di un nome generato in modo casuale. Se si eseguono più contenitori, non è possibile riutilizzare lo stesso nome. --hostname sql1 Usato per impostare in modo esplicito il nome host del contenitore. Se non viene specificato, il valore predefinito del nome host è l'ID contenitore, ovvero un GUID di sistema generato in modo casuale. -d Esegue il contenitore in background (daemon). mcr.microsoft.com/mssql/server:2017-latest Immagine del contenitore di SQL Server in Linux. Per visualizzare i contenitori di Docker, usare il comando
docker ps
.sudo docker ps -a
docker ps -a
docker ps -a
L'output dovrebbe essere simile al seguente:
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
Se nella colonna
STATUS
è impostato lo statoUp
, SQL Server è in esecuzione nel contenitore e in ascolto sulla porta specificata nella colonnaPORTS
. Se la colonnaSTATUS
del contenitore di SQL Server è impostata suExited
, vedere la sezione relativa alla risoluzione dei problemi della guida alla configurazione. Il server è pronto per le connessioni quando i log degli errori di SQL Server visualizzano questo messaggio:SQL Server is now ready for client connections. This is an informational message; no user action is required
. È possibile esaminare il log degli errori di SQL Server all'interno del contenitore usando il comando seguente:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
Il parametro
--hostname
illustrato in precedenza sostituisce il nome interno del contenitore con un valore personalizzato. Questo valore è il nome che viene restituito nella query Transact-SQL seguente:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
L'impostazione di
--hostname
e--name
sullo stesso valore è un buon modo per identificare facilmente il contenitore di destinazione.Come passaggio finale, cambiare la password dell'amministratore di sistema, perché il valore di
MSSQL_SA_PASSWORD
è visibile nell'output dips -eax
e viene archiviato nella variabile di ambiente con lo stesso nome. Vedere i passaggi seguenti.
Effettuare il pull ed eseguire l'immagine del contenitore di SQL Server in Linux
Prima di iniziare la procedura seguente, assicurarsi di aver selezionato la shell preferita (Bash, PowerShell o cmd) all'inizio di questo articolo.
Eseguire il pull dell'immagine del contenitore di SQL Server 2019 (15.x) in Linux dal Registro Container Microsoft.
sudo 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
Suggerimento
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2019 (15.x). Se si preferisce creare contenitori Linux per versioni diverse di SQL Server, vedere le versioni SQL Server 2017 (14.x) o SQL Server 2022 (16.x) di questo articolo.
Il comando riportato sopra esegue il pull dell'immagine del contenitore di SQL Server 2019 (15.x) in Linux più recente. Se si vuole eseguire il pull di un'immagine specifica, aggiungere un segno di due punti e il nome del tag, ad esempio
mcr.microsoft.com/mssql/server:2019-GA-ubuntu
. Per visualizzare tutte le immagini disponibili, vedere la pagina dell'hub Docker su mssql-server.Per i comandi Bash in questo articolo, si usa
sudo
. Se non si vuole usaresudo
per eseguire Docker, è possibile configurare un gruppodocker
e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).Per eseguire l'immagine del contenitore Linux con Docker, è possibile usare il comando seguente da una shell Bash o da un prompt dei comandi PowerShell con privilegi elevati.
Importante
La variabile di ambiente
SA_PASSWORD
è deprecata. Usare inveceMSSQL_SA_PASSWORD
.sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2019-latest
Nota
Se si usa PowerShell Core, sostituire le virgolette doppie con virgolette singole.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" ` -p 1433:1433 --name sql1 --hostname sql1 ` -d ` mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" ` -p 1433:1433 --name sql1 --hostname sql1 ` -d ` mcr.microsoft.com/mssql/server:2019-latest
La password deve essere conforme ai criteri password predefiniti di SQL Server, altrimenti il contenitore non potrà configurare SQL Server e smetterà di funzionare. Per impostazione predefinita, la password deve essere composta da almeno otto caratteri e contenere caratteri di tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, cifre in base 10 e simboli. È possibile esaminare il log degli errori mediante il comando
docker logs
.Per impostazione predefinita, in questa guida di avvio rapido viene creato un contenitore con l'edizione Developer di SQL Server. Il processo di esecuzione delle edizioni di produzione nei contenitori è leggermente diverso. Per altre informazioni, vedere Run production container images (Eseguire immagini del contenitore di produzione).
La tabella seguente offre una descrizione dei parametri dell'esempio
docker run
precedente:Parametro Descrizione -e "ACCEPT_EULA=Y" Impostare la variabile ACCEPT_EULA
su un valore qualsiasi per confermare l'accettazione del contratto di licenza con l'utente finale. Impostazione obbligatoria per l'immagine di SQL Server.-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" Specificare la password complessa composta da almeno otto caratteri e conforme ai requisiti per le password di SQL Server. Impostazione obbligatoria per l'immagine di SQL Server. -e "MSSQL_COLLATION=<SQL_Server_collation>" Specificare le regole di confronto personalizzate SQL Server anziché il valore predefinito SQL_Latin1_General_CP1_CI_AS
.-p 1433:1433 Eseguire il mapping di una porta TCP nell'ambiente host (primo valore) con una porta TCP nel contenitore (secondo valore). In questo esempio SQL Server è in ascolto sulla porta TCP 1433 del contenitore e la porta del contenitore è a sua volta esposta alla porta 1433 nell'host. --name sql1 Specificare un nome personalizzato per il contenitore, invece di un nome generato in modo casuale. Se si eseguono più contenitori, non è possibile riutilizzare lo stesso nome. --hostname sql1 Usato per impostare in modo esplicito il nome host del contenitore. Se non viene specificato, il valore predefinito del nome host è l'ID contenitore, ovvero un GUID di sistema generato in modo casuale. -d Esegue il contenitore in background (daemon). mcr.microsoft.com/mssql/server:2019-latest Immagine del contenitore di SQL Server in Linux. Per visualizzare i contenitori di Docker, usare il comando
docker ps
.sudo docker ps -a
docker ps -a
docker ps -a
L'output dovrebbe essere simile al seguente:
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
Se nella colonna
STATUS
è impostato lo statoUp
, SQL Server è in esecuzione nel contenitore e in ascolto sulla porta specificata nella colonnaPORTS
. Se la colonnaSTATUS
del contenitore di SQL Server è impostata suExited
, vedere la sezione relativa alla risoluzione dei problemi della guida alla configurazione. Il server è pronto per le connessioni quando i log degli errori di SQL Server visualizzano questo messaggio:SQL Server is now ready for client connections. This is an informational message; no user action is required
. È possibile esaminare il log degli errori di SQL Server all'interno del contenitore usando il comando seguente:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
Il parametro
--hostname
illustrato in precedenza sostituisce il nome interno del contenitore con un valore personalizzato. Questo valore è il nome che viene restituito nella query Transact-SQL seguente:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
L'impostazione di
--hostname
e--name
sullo stesso valore è un buon modo per identificare facilmente il contenitore di destinazione.Come passaggio finale, cambiare la password dell'amministratore di sistema, perché il valore di
MSSQL_SA_PASSWORD
è visibile nell'output dips -eax
e viene archiviato nella variabile di ambiente con lo stesso nome. Vedere i passaggi seguenti.
Effettuare il pull ed eseguire l'immagine del contenitore di SQL Server in Linux
Prima di iniziare la procedura seguente, assicurarsi di aver selezionato la shell preferita (Bash, PowerShell o cmd) all'inizio di questo articolo.
Eseguire il pull dell'immagine del contenitore Linux SQL Server 2022 (16.x) dal Registro Contenitori Microsoft.
sudo 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
Suggerimento
Questa guida introduttiva crea SQL Server contenitori 2022 (16.x). Se si preferisce creare contenitori Linux per versioni diverse di SQL Server, vedere le versioni SQL Server 2017 (14.x) o SQL Server 2019 (15.x) di questo articolo.
Il comando precedente esegue il pull dell'immagine del contenitore Linux più recente SQL Server 2022 (16.x). Se si vuole eseguire il pull di un'immagine specifica, aggiungere un segno di due punti e il nome del tag, ad esempio
mcr.microsoft.com/mssql/server:2022-GA-ubuntu
. Per visualizzare tutte le immagini disponibili, vedere la pagina dell'hub Docker su mssql-server.Per i comandi Bash in questo articolo, si usa
sudo
. Se non si vuole usaresudo
per eseguire Docker, è possibile configurare un gruppodocker
e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).Per eseguire l'immagine del contenitore Linux con Docker, è possibile usare il comando seguente da una shell Bash o da un prompt dei comandi PowerShell con privilegi elevati.
Importante
La variabile di ambiente
SA_PASSWORD
è deprecata. Usare inveceMSSQL_SA_PASSWORD
.sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2022-latest
Nota
Se si usa PowerShell Core, sostituire le virgolette doppie con virgolette singole.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" ` -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=<YourStrong@Passw0rd>" ` -p 1433:1433 --name sql1 --hostname sql1 ` -d ` mcr.microsoft.com/mssql/server:2022-latest
La password deve essere conforme ai criteri password predefiniti di SQL Server, altrimenti il contenitore non potrà configurare SQL Server e smetterà di funzionare. Per impostazione predefinita, la password deve essere composta da almeno otto caratteri e contenere caratteri di tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, cifre in base 10 e simboli. È possibile esaminare il log degli errori mediante il comando
docker logs
.Per impostazione predefinita, in questa guida di avvio rapido viene creato un contenitore con l'edizione Developer di SQL Server. Il processo di esecuzione delle edizioni di produzione nei contenitori è leggermente diverso. Per altre informazioni, vedere Run production container images (Eseguire immagini del contenitore di produzione).
La tabella seguente offre una descrizione dei parametri dell'esempio
docker run
precedente:Parametro Descrizione -e "ACCEPT_EULA=Y" Impostare la variabile ACCEPT_EULA
su un valore qualsiasi per confermare l'accettazione del contratto di licenza con l'utente finale. Impostazione obbligatoria per l'immagine di SQL Server.-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" Specificare la password complessa composta da almeno otto caratteri e conforme ai requisiti per le password di SQL Server. Impostazione obbligatoria per l'immagine di SQL Server. -e "MSSQL_COLLATION=<SQL_Server_collation>" Specificare le regole di confronto personalizzate SQL Server anziché il valore predefinito SQL_Latin1_General_CP1_CI_AS
.-p 1433:1433 Eseguire il mapping di una porta TCP nell'ambiente host (primo valore) con una porta TCP nel contenitore (secondo valore). In questo esempio SQL Server è in ascolto sulla porta TCP 1433 del contenitore e la porta del contenitore è a sua volta esposta alla porta 1433 nell'host. --name sql1 Specificare un nome personalizzato per il contenitore, invece di un nome generato in modo casuale. Se si eseguono più contenitori, non è possibile riutilizzare lo stesso nome. --hostname sql1 Usato per impostare in modo esplicito il nome host del contenitore. Se non viene specificato, il valore predefinito del nome host è l'ID contenitore, ovvero un GUID di sistema generato in modo casuale. -d Esegue il contenitore in background (daemon). mcr.microsoft.com/mssql/server:2022-latest Immagine del contenitore di SQL Server in Linux. Per visualizzare i contenitori di Docker, usare il comando
docker ps
.sudo docker ps -a
docker ps -a
docker ps -a
L'output dovrebbe essere simile al seguente:
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
Se nella colonna
STATUS
è impostato lo statoUp
, SQL Server è in esecuzione nel contenitore e in ascolto sulla porta specificata nella colonnaPORTS
. Se la colonnaSTATUS
del contenitore di SQL Server è impostata suExited
, vedere la sezione relativa alla risoluzione dei problemi della guida alla configurazione. Il server è pronto per le connessioni quando i log degli errori di SQL Server visualizzano questo messaggio:SQL Server is now ready for client connections. This is an informational message; no user action is required
. È possibile esaminare il log degli errori di SQL Server all'interno del contenitore usando il comando seguente:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
Il parametro
--hostname
illustrato in precedenza sostituisce il nome interno del contenitore con un valore personalizzato. Questo valore è il nome che viene restituito nella query Transact-SQL seguente:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
L'impostazione di
--hostname
e--name
sullo stesso valore è un buon modo per identificare facilmente il contenitore di destinazione.Come passaggio finale, cambiare la password dell'amministratore di sistema, perché il valore di
MSSQL_SA_PASSWORD
è visibile nell'output dips -eax
e viene archiviato nella variabile di ambiente con lo stesso nome. Vedere i passaggi seguenti.
Cambiare la password dell'amministratore di sistema
L'account SA è un amministratore di sistema dell'istanza di SQL Server creato durante l'installazione. Dopo aver creato il contenitore SQL Server, la variabile di ambiente MSSQL_SA_PASSWORD
specificata diventa individuabile eseguendo echo $MSSQL_SA_PASSWORD
nel contenitore. Per motivi di sicurezza, modificare la password dell'amministratore di sistema.
Scegliere una password complessa da usare per l'utente SA.
Usare
docker exec
per eseguire sqlcmd per modificare la password usando Transact-SQL. Nell'esempio seguente, la password precedente e quella nuova vengono lette dall'input dell'utente.sudo docker exec -it sql1 /opt/mssql-tools/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}")\""
Scegliere una password complessa da usare per l'utente SA.
Nell'esempio seguente sostituire la vecchia password,
<YourStrong@Passw0rd>
, e la nuova password,<YourNewStrong@Passw0rd>
, con le password personali.docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourStrong@Passw0rd>" ` -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
Scegliere una password complessa da usare per l'utente SA.
Nell'esempio seguente sostituire la vecchia password,
<YourStrong@Passw0rd>
, e la nuova password,<YourNewStrong@Passw0rd>
, con le password personali.docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourStrong@Passw0rd>" ` -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
Connessione a SQL Server
La procedura seguente usa lo strumento da riga di comando di SQL Server, sqlcmd, all'interno del contenitore per stabilire la connessione a SQL Server.
Usare il comando
docker exec -it
per avviare una shell Bash interattiva all'interno del contenitore in esecuzione. Nell'esempio seguentesql1
è il nome specificato dal parametro--name
quando è stato creato il contenitore.sudo docker exec -it sql1 "bash"
docker exec -it sql1 "bash"
docker exec -it sql1 "bash"
Una volta all'interno del contenitore, eseguire la connessione in locale con sqlcmd usando il percorso completo.
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
Suggerimento
È possibile omettere la password nella riga di comanda perché sia richiesto di essere immessa. Ecco un esempio:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA
Se la connessione viene eseguita correttamente, il prompt dei comandi sqlcmd sarà:
1>
.
Creare i dati e recuperarli tramite query
Nelle sezioni seguenti viene descritto l'uso di sqlcmd e Transact-SQL per creare un nuovo database, aggiungere dati ed eseguire una query.
Creare un nuovo database
La seguente procedura consente di creare un nuovo database denominato TestDB
.
Dal prompt dei comandi sqlcmd incollare il comando seguente di Transact-SQL per creare un database di test:
CREATE DATABASE TestDB;
Nella riga successiva scrivere una query perché vengano restituiti i nomi di tutti database nel server:
SELECT Name from sys.databases;
I due comandi precedenti non sono stati eseguiti immediatamente. Digitare
GO
in una nuova riga per eseguire i comandi precedenti:GO
Inserire i dati
Creare poi una nuova tabella Inventory
e inserire due nuove righe.
Dal prompt dei comandi sqlcmd spostare il contesto nel nuovo database
TestDB
:USE TestDB;
Creare una nuova tabella denominata
Inventory
:CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
Inserire i dati nella nuova tabella:
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
Digitare
GO
per eseguire i comandi precedenti:GO
Selezionare i dati
A questo punto, eseguire una query per restituire i dati dalla tabella Inventory
.
Dal prompt dei comandi sqlcmd immettere una query che restituisca le righe dalla tabella
Inventory
che ne contiene oltre 152:SELECT * FROM Inventory WHERE quantity > 152;
Eseguire il comando:
GO
Uscire dal prompt dei comandi sqlcmd
Per terminare la sessione sqlcmd, digitare
QUIT
:QUIT
Per uscire dal prompt dei comandi interattivo nel contenitore, digitare
exit
. Dopo la chiusura della shell Bash interattiva, il contenitore continua l'esecuzione.
Eseguire la connessione dall'esterno del contenitore
È anche possibile connettersi all'istanza di SQL Server nel computer che esegue Docker da uno strumento esterno Linux, Windows o macOS che supporti le connessioni SQL. Lo strumento esterno userà l'indirizzo IP per il computer host.
La procedura seguente usa sqlcmd all'esterno del contenitore per stabilire la connessione a SQL Server in esecuzione nel contenitore. Questa procedura presuppone che gli strumenti da riga di comando di SQL Server siano già installati all'esterno del contenitore. Gli stessi principi valgono quando si usano altri strumenti, ma il processo di connessione è specifico di ogni strumento.
Trovare l'indirizzo IP del computer host del contenitore usando
ifconfig
oip addr
.Per questo esempio, installare lo strumento sqlcmd nel computer client. Per altre informazioni, vedere Installare sqlcmd in Windows o Installare sqlcmd in Linux.
Eseguire sqlcmd specificando l'indirizzo IP e la porta mappata alla porta 1433 nel contenitore. In questo esempio la porta corrisponde alla porta 1433 nel computer host. Se si è specificata una porta con mapping diverso nel computer host, è possibile usarla qui. Sarà necessario anche aprire la porta in ingresso appropriata nel firewall per consentire la connessione.
sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
Eseguire i comandi Transact-SQL. Al termine, digitare
QUIT
.
Altri strumenti usati comunemente per connettersi a SQL Server sono:
- Visual Studio Code
- SQL Server Management Studio (SSMS) per Windows
- Azure Data Studio
- mssql-cli (Preview)
- PowerShell Core
Rimuovere il contenitore
Se si vuole rimuovere il contenitore di SQL Server usato in questa esercitazione, eseguire i comandi seguenti:
sudo docker stop sql1
sudo docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
Avviso
Se si arresta e si rimuove un contenitore, i dati di SQL Server eventualmente presenti nel contenitore vengono eliminati in modo definitivo. Se occorre conservare i dati, creare un file di backup e copiarlo all'esterno del contenitore oppure usare una tecnica di persistenza dei dati del contenitore.
Demo di Docker
Se, dopo aver provato a usare l'immagine del contenitore di SQL Server in Linux per Docker, si vuole sapere come si può usare Docker per migliorare le attività di sviluppo e test, il video seguente illustra l'uso di Docker in uno scenario di integrazione continua e distribuzione.
Passaggi successivi
- Ripristinare un database di SQL Server in un contenitore Docker per Linux.
- Informazioni sull'esecuzione di più contenitori e sulla persistenza dei dati.
- Risoluzione dei problemi dei contenitori Docker di SQL Server.
Nel repository GitHub mssql-docker sono inoltre disponibili risorse, feedback e documentazione su problemi noti.