Eseguire l'immagine di SQL Server 2017 contenitore con DockerRun the SQL Server 2017 container image with Docker

QUESTO ARGOMENTO SI APPLICA A: noSQL Server su WindowssìSQL Server su LinuxnoDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data Warehouse THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

In questa esercitazione introduttiva usare Docker pull ed eseguire l'immagine di contenitore di SQL Server 2017, mssql-server-linux.In this quick start tutorial, you use Docker to pull and run the SQL Server 2017 container image, mssql-server-linux. Connettiti con sqlcmd per creare il primo database ed eseguire query.Then connect with sqlcmd to create your first database and run queries.

Questa immagine è costituito da SQL Server in esecuzione in base a 16.04 Ubuntu Linux.This image consists of SQL Server running on Linux based on Ubuntu 16.04. E può essere utilizzato con il motore Docker 1.8 + in Linux o in Docker per Mac e Windows.It can be used with the Docker Engine 1.8+ on Linux or on Docker for Mac/Windows.

Nota

Questa Guida introduttiva illustra in modo specifico utilizzando l'immagine mssql-server-linux.This quick start specifically focuses on using the mssql-server-linux image. L'immagine di Windows non è coperto, ma sono disponibili ulteriori informazioni sul pagina Hub Docker mssql-server-windows.The Windows image is not covered, but you can learn more about it on the mssql-server-windows Docker Hub page.

Prerequisiti Prerequisites

Importante

Il valore predefinito su Docker per Mac e Docker per Windows è 2 GB per la VM Moby, pertanto è necessario modificarla a 4 GB.The default on Docker for Mac and Docker for Windows is 2 GB for the Moby VM, so you must change it to 4 GB. Se si eseguono in Mac o Windows, utilizzare le procedure seguenti per aumentare la memoria.If you are running on Mac or Windows, use the following procedures to increase the memory.

Aumentare la memoria di Docker a 4 GB (Mac)Increase Docker memory to 4 GB (Mac)

I passaggi seguenti aumentare la memoria per Docker per Mac a 4 GB.The following steps increase the memory for Docker for Mac to 4 GB.

  1. Fare clic sul logo di Docker sulla barra di stato superiore.Click the Docker logo on the top status bar.
  2. Selezionare preferenze.Select Preferences.
  3. Spostare l'indicatore di memoria per almeno 4 GB.Move the memory indicator to 4 GB or more.
  4. Fare clic su di riavviare pulsante il pulsante della schermata.Click the restart button at the button of the screen.

Aumentare la memoria di Docker a 4 GB (Windows)Increase Docker memory to 4 GB (Windows)

I passaggi seguenti aumentare la memoria di Docker per Windows a 4 GB.The following steps increase the memory for Docker for Windows to 4 GB.

  1. Fare doppio clic sull'icona di Docker dalla barra delle applicazioni.Right-click on the Docker icon from the task bar.
  2. Fare clic su impostazioni in tale menu.Click Settings under that menu.
  3. Fare clic su di Advanced scheda.Click the Advanced Tab.
  4. Spostare l'indicatore di memoria per almeno 4 GB.Move the memory indicator to 4 GB or more.
  5. Fare clic su di applica pulsante.Click the Apply button.

Effettuare il pull ed eseguire l'immagine del contenitorePull and run the container image

  1. Effettuare il pull dell'immagine di SQL Server per Linux 2017 contenitore dall'Hub Docker.Pull the SQL Server 2017 Linux container image from Docker Hub.

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

    Per Linux, a seconda della configurazione di sistema e utente, è necessario anteporre ogni docker con sudo.For Linux, depending on your system and user configuration, you might need to preface each docker command with sudo.

    Nota

    Il comando precedente effettua il pull dell'immagine contenitore GA 2017 di SQL Server.The command above pulls the SQL Server 2017 GA container image. Se si desidera effettuare il pull di un'immagine specifica, aggiungere i due punti e il nome del tag (ad esempio, microsoft/mssql-server-linux:rc1).If you want to pull a specific image, you add a colon and the tag name (for example, microsoft/mssql-server-linux:rc1). Per visualizzare tutte le immagini disponibili, vedere pagina dell'hub Docker mssql-server-linux.To see all available images, see the mssql-server-linux Docker hub page.

  2. Per eseguire l'immagine contenitore con Docker, è possibile utilizzare il comando seguente da una shell bash (Linux/macOS):To run the container image with Docker, you can use the following command from a bash shell (Linux/macOS):

    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' -p 1401:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest
    

    Se si usa Docker per Windows, utilizzare il comando seguente da un comando-prompt di PowerShell con privilegi elevati:If you are using Docker for Windows, use the following command from an elevated PowerShell command-prompt:

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -e "MSSQL_PID=Developer" -p 1401:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest
    
    Nota

    L'unica differenza tra l'esempio bash (Linux/macOS) e l'esempio di PowerShell (Windows) è tra virgolette singole e virgolette doppie le variabili di ambiente.The only difference between the bash (Linux/macOS) example and the PowerShell (Windows) example is single quotes versus double-quotes around the environment variables. Il comando docker run ha esito negativo se si usa quella sbagliata.The docker run command fails if you use the wrong one. Il resto di questo argomento vengono forniti per comodità bash e blocchi di codice di PowerShell.Throughout the remainder of this topic, bash and PowerShell code blocks are provided for convenience. Se è presente solo un esempio, funziona in tutte le piattaforme, tra cui Windows.If there is only one example, it works on all platforms, including Windows.

    Nella tabella seguente fornisce una descrizione dei parametri nella precedente docker run esempio:The following table provides a description of the parameters in the previous docker run example:

    ParametroParameter DescriptionDescription
    -e ' ACCEPT_EULA = Y'-e 'ACCEPT_EULA=Y' Impostare il ACCEPT_EULA variabile qualsiasi valore per confermare l'accettazione del il contratto di licenza dell'utente finale.Set the ACCEPT_EULA variable to any value to confirm your acceptance of the End-User Licensing Agreement. È necessario impostare per l'immagine di SQL Server.Required setting for the SQL Server image.
    -e ' MSSQL_SA_PASSWORD =<YourStrong! Passw0rd>'-e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' Specificare una password complessa è composta da almeno 8 caratteri e soddisfa requisiti di password del Server SQL.Specify your own strong password that is at least 8 characters and meets SQL Server's password requirements. È necessario impostare per l'immagine di SQL Server.Required setting for the SQL Server image.
    -e ' MSSQL_PID = sviluppatore '-e 'MSSQL_PID=Developer' Specifica la chiave edition o prodotto.Specifies the edition or product key. In questo esempio, l'edizione Developer liberamente con licenza viene utilizzato per il test non di produzione.In this example, the freely licensed Developer Edition is used for non-production testing. Per altri valori, vedere le impostazioni di configurazione SQL Server con le variabili di ambiente in Linux.For other values, see Configure SQL Server settings with environment variables on Linux.
    1401:1433 -p-p 1401:1433 Mapping di una porta TCP per l'ambiente host (il primo valore) con una porta TCP nel contenitore (secondo valore).Map a TCP port on the host environment (first value) with a TCP port in the container (second value). In questo esempio, SQL Server è in ascolto sulla porta TCP 1433 nel contenitore e questa funzionalità è esposta alla porta, 1401, nell'host.In this example, SQL Server is listening on TCP 1433 in the container and this is exposed to the port, 1401, on the host.
    -nome sql1--name sql1 Specificare un nome personalizzato per il contenitore invece uno generato casualmente.Specify a custom name for the container rather than a randomly generated one. Se si esecuzione più di un contenitore, è possibile riutilizzare questo stesso nome.If you run more than one container, you can't reuse this same name.
    mssql/Microsoft-server-linux:2017-più recentemicrosoft/mssql-server-linux:2017-latest L'immagine di SQL Server per Linux 2017 contenitore.The SQL Server 2017 Linux container image.
  3. Per visualizzare i contenitori di Docker, usare il docker ps comando.To view your Docker containers, use the docker ps command.

    docker ps -a
    

    Verrà visualizzato l'output simile al seguente schermata:You should see output similar to the following screenshot:

    Output del comando di docker ps

  4. Se il stato colonna viene visualizzato lo stato backup, quindi viene eseguito SQL Server nel contenitore e in ascolto sulla porta specificata nella porte colonna.If the STATUS column shows a status of Up, then SQL Server is running in the container and listening on the port specified in the PORTS column. Se il stato colonna per il contenitore di SQL Server viene illustrata Exited, vedere il sezione della Guida alla configurazione di risoluzione dei problemi.If the STATUS column for your SQL Server container shows Exited, see the Troubleshooting section of the configuration guide.

Il -h è utile anche il parametro (nome host), ma non viene utilizzato in questa esercitazione per motivi di semplicità.The -h (host name) parameter is also useful, but it is not used in this tutorial for simplicity. Questa modifica il nome interno del contenitore su un valore personalizzato.This changes the internal name of the container to a custom value. Si tratta del nome che verrà restituito nella query Transact-SQL seguente:This is the name you'll see returned in the following Transact-SQL query:

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

Impostazione -h e --name sullo stesso valore è un buon metodo per identificare facilmente il contenitore di destinazione.Setting -h and --name to the same value is a good way to easily identify the target container.

Modificare la password SAChange the SA password

L'account SA è un amministratore di sistema dell'istanza di SQL Server creato durante l'installazione.The SA account is a system administrator on the SQL Server instance that gets created during setup. Dopo aver creato il contenitore SQL Server, la variabile di ambiente MSSQL_SA_PASSWORD specificata diventa individuabile eseguendo echo $MSSQL_SA_PASSWORD nel contenitore.After creating your SQL Server container, the MSSQL_SA_PASSWORD environment variable you specified is discoverable by running echo $MSSQL_SA_PASSWORD in the container. Per motivi di sicurezza, modificare la password dell'amministratore di sistema.For security purposes, change your SA password.

  1. Scegliere una password complessa da usare per l'utente SA.Choose a strong password to use for the SA user.

  2. Usare docker exec per eseguire sqlcmd per modificare la password usando Transact-SQL.Use docker exec to run sqlcmd to change the password using Transact-SQL. Sostituire <YourStrong!Passw0rd> e <YourNewStrong!Passw0rd> con valori di password.Replace <YourStrong!Passw0rd> and <YourNewStrong!Passw0rd> with your own password values.

    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P '<YourStrong!Passw0rd>' \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong!Passw0rd>"'
    
    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 ServerConnect to SQL Server

La procedura seguente utilizza lo strumento da riga di comando di SQL Server, sqlcmd, all'interno del contenitore per la connessione a SQL Server.The following steps use the SQL Server command-line tool, sqlcmd, inside the container to connect to SQL Server.

  1. Utilizzare il docker exec -it comando per avviare una shell bash interattiva all'interno del contenitore in esecuzione.Use the docker exec -it command to start an interactive bash shell inside your running container. Nell'esempio seguente sql1 nome specificato da di --name parametro al momento della creazione del contenitore.In the following example sql1 is name specified by the --name parameter when you created the container.

    docker exec -it sql1 "bash"
    
  2. Una volta all'interno del contenitore, la connessione in locale con sqlcmd.Once inside the container, connect locally with sqlcmd. SQLCMD non è il percorso per impostazione predefinita, è necessario specificare il percorso completo.Sqlcmd is not in the path by default, so you have to specify the full path.

    /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.You can omit the password on the command-line to be prompted to enter it.

  3. Se la connessione viene eseguita correttamente, il prompt dei comandi sqlcmd sarà: 1>.If successful, you should get to a sqlcmd command prompt: 1>.

Creare i dati e recuperarli tramite queryCreate and query data

Nelle sezioni seguenti viene descritto l'uso di sqlcmd e Transact-SQL per creare un nuovo database, aggiungere dati ed eseguire una query semplice.The following sections walk you through using sqlcmd and Transact-SQL to create a new database, add data, and run a simple query.

Creare un nuovo databaseCreate a new database

La seguente procedura consente di creare un nuovo database denominato TestDB.The following steps create a new database named TestDB.

  1. Dal prompt dei comandi sqlcmd incollare il comando seguente di Transact-SQL per creare un database di test:From the sqlcmd command prompt, paste the following Transact-SQL command to create a test database:

    CREATE DATABASE TestDB
    
  2. Nella riga successiva scrivere una query perché vengano restituiti i nomi di tutti database nel server:On the next line, write a query to return the name of all of the databases on your server:

    SELECT Name from sys.Databases
    
  3. I due comandi precedenti non sono stati eseguiti immediatamente.The previous two commands were not executed immediately. È necessario digitare GO in una nuova riga per eseguire i comandi precedenti:You must type GO on a new line to execute the previous commands:

    GO
    

Inserire i datiInsert data

Creare poi una nuova tabella Inventory e inserire due nuove righe.Next create a new table, Inventory, and insert two new rows.

  1. Dal prompt dei comandi sqlcmd spostare il contesto nel nuovo database TestDB:From the sqlcmd command prompt, switch context to the new TestDB database:

    USE TestDB
    
  2. Creare una nuova tabella denominata Inventory:Create new table named Inventory:

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
    
  3. Inserire i dati nella nuova tabella:Insert data into the new table:

    INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
    
  4. Digitare GO per eseguire i comandi precedenti:Type GO to execute the previous commands:

    GO
    

Selezionare i datiSelect data

A questo punto, eseguire una query per restituire i dati dalla tabella Inventory.Now, run a query to return data from the Inventory table.

  1. Dal prompt dei comandi sqlcmd immettere una query che restituisca le righe dalla tabella Inventory che ne contiene oltre 152:From the sqlcmd command prompt, enter a query that returns rows from the Inventory table where the quantity is greater than 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Eseguire il comando:Execute the command:

    GO
    

Uscire dal prompt dei comandi sqlcmdExit the sqlcmd command prompt

  1. Per terminare la sessione sqlcmd, digitare QUIT:To end your sqlcmd session, type QUIT:

    QUIT
    
  2. Per uscire dal prompt interattivo nel contenitore, digitare exit.To exit the interactive command-prompt in your container, type exit. Il contenitore continua a essere eseguito dopo la chiusura della shell bash interattivo.Your container continues to run after you exit the interactive bash shell.

Connettersi dall'esterno del contenitore Connect from outside the container

È possibile anche connettersi all'istanza di SQL Server nel computer Docker da qualsiasi strumento esterno macOS, Windows o Linux che supporta le connessioni SQL.You can also connect to the SQL Server instance on your Docker machine from any external Linux, Windows, or macOS tool that supports SQL connections.

Utilizzare i passaggi seguenti sqlcmd di fuori del contenitore per la connessione a SQL Server in esecuzione nel contenitore.The following steps use sqlcmd outside of your container to connect to SQL Server running in the container. Questi passaggi si presuppongono di aver già gli strumenti da riga di comando di SQL Server installati di fuori del contenitore.These steps assume that you already have the SQL Server command-line tools installed outside of your container. Le stesse entità si applicano quando si utilizzano altri strumenti, ma il processo di connessione è univoco per ogni strumento.The same principals apply when using other tools, but the process of connecting is unique to each tool.

  1. Individuare l'indirizzo IP per il computer che ospita il contenitore.Find the IP address for the machine that hosts your container. In Linux, usare ifconfig o ip addr. In Windows, utilizzare ipconfig.On Linux, use ifconfig or ip addr. On Windows, use ipconfig.

  2. Esecuzione di sqlcmd che specifica l'indirizzo IP e la porta mappata alla porta 1433 nel contenitore.Run sqlcmd specifying the IP address and the port mapped to port 1433 in your container. In questo esempio riguarda la porta 1401 nel computer host.In this example, that is port 1401 on the host machine.

    sqlcmd -S 10.3.2.4,1401 -U SA -P '<YourNewStrong!Passw0rd>'
    
    sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourNewStrong!Passw0rd>"
    
  3. Eseguire i comandi Transact-SQL.Run Transact-SQL commands. Al termine, digitare QUIT.When finished, type QUIT.

Altri strumenti comuni per connettersi a SQL Server includono:Other common tools to connect to SQL Server include:

Passaggi successiviNext steps

Per esplorare altri scenari, ad esempio l'esecuzione di più contenitori, persistenza dei dati e la risoluzione dei problemi, vedere configurare SQL Server 2017 le immagini contenitore Docker.To explore other scenarios, such as running multiple containers, data persistence, and troubleshooting, see Configure SQL Server 2017 container images on Docker.

Inoltre, estrarre il repository GitHub mssql docker per le risorse, commenti e suggerimenti e problemi noti.Also, check out the mssql-docker GitHub repository for resources, feedback, and known issues.