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 usa 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.
Avviso
Se si arresta e si rimuove un contenitore, i dati di SQL Server eventualmente presenti nel contenitore vengono eliminati in modo definitivo. Per ulteriori informazioni sulla conservazione dei dati, creare un file di backup e copiarlo all'esterno del contenitore oppure usare una tecnica di persistenza dei dati del contenitore.
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2017 (14.x). Se preferisci creare contenitori Linux per versioni diverse di SQL Server, vedi le versioni SQL Server 2019 (15.x) o SQL Server 2022 (16.x) di questo articolo.
In questa guida di avvio rapido si usa 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.
Avviso
Se si arresta e si rimuove un contenitore, i dati di SQL Server eventualmente presenti nel contenitore vengono eliminati in modo definitivo. Per ulteriori informazioni sulla conservazione dei dati, creare un file di backup e copiarlo all'esterno del contenitore oppure usare una tecnica di persistenza dei dati del contenitore.
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2019 (15.x). Se preferisci creare contenitori Linux per versioni diverse di SQL Server, vedi le versioni SQL Server 2017 (14.x) o SQL Server 2022 (16.x) di questo articolo.
In questa guida di avvio rapido si usa Docker per effettuare il pull ed eseguire l'immagine del contenitore di SQL Server 2022 (16.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 2022 in Linux.
Avviso
Se si arresta e si rimuove un contenitore, i dati di SQL Server eventualmente presenti nel contenitore vengono eliminati in modo definitivo. Per ulteriori informazioni sulla conservazione dei dati, creare un file di backup e copiarlo all'esterno del contenitore oppure usare una tecnica di persistenza dei dati del contenitore.
In questa guida di avvio rapido vengono creati contenitori di SQL Server 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. Può essere usata con il motore Docker 1.8 o versioni successive su Linux.
A partire da SQL Server 2022 (16.x) CU 14 e SQL Server 2019 (15.x) CU 28, le immagini del contenitore includono il nuovo pacchetto mssql-tools18. La directory /opt/mssql-tools/bin
precedente viene eliminata gradualmente. La nuova directory per gli strumenti microsoft ODBC 18 è /opt/mssql-tools18/bin
, in linea con l'offerta degli strumenti più recenti. Per altre informazioni sulle modifiche e sui miglioramenti della sicurezza, vedere Driver ODBC 18.0 per SQL Server.
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.
Importante
sqlcmd attualmente non supporta il parametro MSSQL_PID
durante la creazione di contenitori. Se si usano le istruzioni sqlcmd in questa guida di avvio rapido, si crea un contenitore con l'edizione Developer di SQL Server. Usa le istruzioni dell'interfaccia della riga di comando per creare un contenitore usando la licenza di tua scelta. Per altre informazioni, vedi Distribuire e connettersi a contenitori di SQL Server Linux.
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 software sul supporto del processore, vedi SQL Server 2016 e 2017: requisiti hardware e software
- Per altre informazioni sui requisiti hardware e software sul supporto del processore, vedi SQL Server 2019: requisiti hardware e software
- Per altre informazioni sui requisiti hardware e software sul supporto del processore, vedi SQL Server 2022: requisiti hardware e software
Driver di archiviazione Docker
overlay2
. 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.Installa la versione più recente di sqlcmd nell'host Docker.
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, assicurati di aver selezionato la shell preferita (Bash, PowerShell o cmd) all'inizio di questo articolo.
Per i comandi Bash in questo articolo, si usa sudo
. Se non si vuole usare sudo
per eseguire Docker, è possibile configurare un gruppo docker
e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).
Eseguire il pull del contenitore dal registro
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
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2017 (14.x). Se preferisci creare contenitori Linux per versioni diverse di SQL Server, vedi 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, vedi il Registro artefatti Microsoft.
Eseguire il contenitore
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. Utilizzare invece MSSQL_SA_PASSWORD
.
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 usi PowerShell Core, sostituisci le virgolette doppie con virgolette singole.
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
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse. Se non si seguono questi requisiti per le password, il contenitore non può configurare SQL Server e smette di funzionare. È 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=<password>" |
Specifica la password complessa composta da almeno otto caratteri e conforme ai criteri password. Impostazione obbligatoria per l'immagine di SQL Server. |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
Specifica le regole di confronto di SQL Server personalizzate 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. |
Visualizzare l’elenco dei contenitori
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 all'esempio 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
, vedi la Risoluzione dei problemi dei contenitori Docker di SQL Server. 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:sudo 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, cambia la password dell'amministratore di sistema in un ambiente di produzione, perché il valore di
MSSQL_SA_PASSWORD
è visibile nell'output dips -eax
e viene archiviato nella variabile di ambiente con lo stesso nome.
Effettuare il pull ed eseguire l'immagine del contenitore di SQL Server in Linux
Prima di iniziare la procedura seguente, assicurati di aver selezionato la shell preferita (Bash, PowerShell o cmd) all'inizio di questo articolo.
Per i comandi Bash in questo articolo, si usa sudo
. Se non si vuole usare sudo
per eseguire Docker, è possibile configurare un gruppo docker
e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).
Eseguire il pull del contenitore dal registro
Eseguire il pull dell'immagine del contenitore di SQL Server 2019 (15.x) in Linux dal Registro Container 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
In questa guida di avvio rapido vengono creati contenitori di SQL Server 2019 (15.x). Se preferisci creare contenitori Linux per versioni diverse di SQL Server, vedi 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, vedi il Registro artefatti Microsoft.
Eseguire il contenitore
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. Utilizzare invece MSSQL_SA_PASSWORD
.
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 usi PowerShell Core, sostituisci le virgolette doppie con virgolette singole.
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
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.
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
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse. Se non si seguono questi requisiti per le password, il contenitore non può configurare SQL Server e smette di funzionare. È 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=<password>" |
Specifica la password complessa composta da almeno otto caratteri e conforme ai criteri password. Impostazione obbligatoria per l'immagine di SQL Server. |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
Specifica le regole di confronto di SQL Server personalizzate 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. |
Visualizzare l’elenco dei contenitori
Per visualizzare i contenitori di Docker, usare il comando
docker ps
.docker ps -a
docker ps -a
docker ps -a
L'output dovrebbe essere simile all'esempio 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
, vedi la Risoluzione dei problemi dei contenitori Docker di SQL Server. 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, cambia la password dell'amministratore di sistema in un ambiente di produzione, perché il valore di
MSSQL_SA_PASSWORD
è visibile nell'output dips -eax
e viene archiviato nella variabile di ambiente con lo stesso nome.
Effettuare il pull ed eseguire l'immagine del contenitore di SQL Server in Linux
Prima di iniziare la procedura seguente, assicurati di aver selezionato la shell preferita (Bash, PowerShell o cmd) all'inizio di questo articolo.
Per i comandi Bash in questo articolo, si usa sudo
. Se non si vuole usare sudo
per eseguire Docker, è possibile configurare un gruppo docker
e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).
Eseguire il pull del contenitore dal registro
Esegui il pull dell'immagine del contenitore di SQL Server 2022 (16.x) in Linux dal Registro Container 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
In questa guida di avvio rapido vengono creati contenitori di SQL Server 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 riportato sopra esegue il pull dell'immagine del contenitore di SQL Server 2022 (16.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:2022-GA-ubuntu
. Per visualizzare tutte le immagini disponibili, vedi il Registro artefatti Microsoft.
Eseguire il contenitore
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. Utilizzare invece MSSQL_SA_PASSWORD
.
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 usi PowerShell Core, sostituisci le virgolette doppie con virgolette singole.
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
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse. Se non si seguono questi requisiti per le password, il contenitore non può configurare SQL Server e smette di funzionare. È 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=<password>" |
Specifica la password complessa composta da almeno otto caratteri e conforme ai criteri password. Impostazione obbligatoria per l'immagine di SQL Server. |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
Specifica le regole di confronto di SQL Server personalizzate 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. |
Cambiare la password dell'amministratore di sistema
L'account amministratore di sistema (sa
) è un amministratore di sistema nell'istanza di SQL Server che viene creata 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, è necessario modificare la sa
password in un ambiente di produzione.
Scegliere una password complessa da usare per l'account
sa
. La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.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.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>'"
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.
Le versioni più recenti di sqlcmd sono protette per impostazione predefinita. Per altre informazioni sulla crittografia della connessione, vedere l’utilità sqlcmd per Windows e Connessione con sqlcmd per Linux e macOS. Se la connessione non va a buon fine, è possibile aggiungere l'opzione
-No
a sqlcmd per specificare che la crittografia è facoltativa, non obbligatoria.
Disabilitare l'account sa come procedura consigliata
Importante
Queste credenziali saranno necessarie per i passaggi successivi. Assicurati di annotare l'ID utente e la password immessi qui.
Quando ci si connette all'istanza di SQL Server usando l'account amministratore di sistema (sa
) per la prima volta dopo l'installazione, è importante seguire questi passaggi e quindi disabilitare immediatamente l'account come procedura consigliata per la sa
sicurezza.
Creare un nuovo account di accesso e impostarlo come membro del ruolo del server sysadmin.
A seconda che si disponga di un contenitore o di una distribuzione non contenitore, abilitare autenticazione di Windows e creare un nuovo account di accesso basato su Windows e aggiungerlo al ruolo del server sysadmin.
In caso contrario, creare un account di accesso usando l'autenticazione di SQL Server e aggiungerlo al ruolo del server sysadmin.
Connessione all'istanza di SQL Server usando il nuovo account di accesso creato.
Disabilita l'account
sa
, come consigliato per la procedura consigliata per la sicurezza.
Visualizzare l’elenco dei contenitori
Per visualizzare i contenitori di Docker, usare il comando
docker ps
.docker ps -a
docker ps -a
docker ps -a
L'output dovrebbe essere simile all'esempio 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
, vedi la Risoluzione dei problemi dei contenitori Docker di SQL Server. 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.
Connessione a SQL Server
La procedura seguente usa lo strumento da riga di comando di SQL Server, utilità 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 seguente,sql1
è il nome specificato dal parametro--name
quando è stato creato il contenitore.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 <userid> -P "<password>"
Le versioni più recenti di sqlcmd sono protette per impostazione predefinita. Per altre informazioni sulla crittografia della connessione, vedere l’utilità sqlcmd per Windows e Connessione con sqlcmd per Linux e macOS. Se la connessione non riesce, è possibile aggiungere l'opzione
-No
a sqlcmd per specificare che la crittografia è facoltativa, non obbligatoria.È possibile omettere la password nella riga di comanda perché sia richiesto di essere immessa. Ad esempio:
/opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
Una volta all'interno del contenitore, eseguire la connessione in locale con sqlcmd usando il percorso completo.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<password>"
Le versioni più recenti di sqlcmd sono protette per impostazione predefinita. Per altre informazioni sulla crittografia della connessione, vedere l’utilità sqlcmd per Windows e Connessione con sqlcmd per Linux e macOS. Se la connessione non riesce, è possibile aggiungere l'opzione
-No
a sqlcmd per specificare che la crittografia è facoltativa, non obbligatoria.È possibile omettere la password nella riga di comanda perché sia richiesto di essere immessa. Ad esempio:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
Una volta all'interno del contenitore, eseguire la connessione in locale con sqlcmd usando il percorso completo.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<password>"
Le versioni più recenti di sqlcmd sono protette per impostazione predefinita. Per altre informazioni sulla crittografia della connessione, vedere l’utilità sqlcmd per Windows e Connessione con sqlcmd per Linux e macOS. Se la connessione non riesce, è possibile aggiungere l'opzione
-No
a sqlcmd per specificare che la crittografia è facoltativa, non obbligatoria.È possibile omettere la password nella riga di comanda perché sia richiesto di essere immessa. Ad esempio:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
- 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.
Connettersi 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 usa 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, vedi Utilità sqlcmd o Installare gli strumenti da riga di comando di SQL Server sqlcmd e bcp 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. È necessario anche aprire la porta in ingresso appropriata nel firewall per consentire la connessione.
Le versioni più recenti di sqlcmd sono protette per impostazione predefinita. Se la connessione non riesce e si usa la versione 18 o successiva, è possibile aggiungere l'opzione
-No
a sqlcmd per specificare che la crittografia è facoltativa, non obbligatoria.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>"
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.
Eseguire i comandi Transact-SQL. Al termine, digitare
QUIT
.
Altri strumenti usati comunemente per connettersi a SQL Server sono:
- Estensione SQL Server per Visual Studio Code
- Usare SQL Server Management Studio in Windows per gestire SQL Server in Linux
- Che cos'è Azure Data Studio?
- mssql-cli (Preview)
- Gestire SQL Server in Linux con PowerShell Core
Rimuovere il contenitore
Se si vuole rimuovere il contenitore di SQL Server usato in questa esercitazione, eseguire i comandi seguenti:
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
Demo di Docker
Se, dopo aver usato 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.
Attività correlate
Contenuto correlato
- Ripristinare un database di SQL Server in un contenitore Docker per Linux
- Risoluzione dei problemi dei contenitori Docker di SQL Server
- Repository GitHub mssql-docker
Contribuire alla documentazione di SQL
Il contenuto SQL può essere modificato. L'autore delle modifiche contribuirà a migliorare la documentazione e verrà accreditato come collaboratore alla realizzazione della pagina.
Per maggiori informazioni, vedere Come contribuire alla documentazione di SQL Server