Dela via


Snabbstart: Köra SQL Server Linux-containeravbildningar med Docker

gäller för:SQL Server – Linux

I den här snabbstarten använder du Docker för att hämta och köra LINUX-containeravbildningen SQL Server 2017 (14.x), mssql-server-linux. Sedan kan du ansluta med sqlcmd för att skapa din första databas och köra frågor.

Mer information om plattformar som stöds finns i Versionsinformation för SQL Server 2017 på Linux.

Varning

När du stoppar och tar bort en container tas DINA SQL Server-data i containern bort permanent. Om du vill ha mer information om hur du bevarar dina data skapar och kopierar du en säkerhetskopia från containern eller använder en beständighetsteknik för containerdata.

Den här snabbstarten skapar SQL Server 2017-containrar (14.x). Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

I den här snabbstarten använder du Docker för att hämta och köra LINUX-containeravbildningen SQL Server 2019 (15.x), mssql-server-linux. Sedan kan du ansluta med sqlcmd för att skapa din första databas och köra frågor.

Mer information om plattformar som stöds finns i Versionsinformation för SQL Server 2019 på Linux.

Varning

När du stoppar och tar bort en container tas DINA SQL Server-data i containern bort permanent. Om du vill ha mer information om hur du bevarar dina data skapar och kopierar du en säkerhetskopia från containern eller använder en beständighetsteknik för containerdata.

Den här snabbstarten skapar SQL Server 2019-containrar (15.x). Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

I den här snabbstarten använder du Docker för att hämta och köra LINUX-containeravbildningen SQL Server 2022 (16.x), mssql-server-linux. Sedan kan du ansluta med sqlcmd för att skapa din första databas och köra frågor.

Mer information om stödda plattformar finns i Versionsinformation för SQL Server 2022 på Linux.

Varning

När du stoppar och tar bort en container tas DINA SQL Server-data i containern bort permanent. Om du vill ha mer information om hur du bevarar dina data skapar och kopierar du en säkerhetskopia från containern eller använder en beständighetsteknik för containerdata.

Den här snabbstarten skapar SQL Server 2022-containrar (16.x). Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

I den här snabbstarten använder du Docker för att hämta och köra SQL Server 2025 (17.x) Förhandsversion av Linux-containeravbildning, mssql-server-linux. Sedan kan du ansluta med sqlcmd för att skapa din första databas och köra frågor.

Mer information om plattformar som stöds finns i Viktig information för förhandsversionen av SQL Server 2025 på Linux.

Varning

När du stoppar och tar bort en container tas DINA SQL Server-data i containern bort permanent. Om du vill ha mer information om hur du bevarar dina data skapar och kopierar du en säkerhetskopia från containern eller använder en beständighetsteknik för containerdata.

Den här snabbstarten skapar SQL Server 2025(17.x) förhandsversionscontainrar. Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

Den här avbildningen består av SQL Server som körs på Linux baserat på Ubuntu. Den kan användas med Docker Engine 1.8+ i Linux.

Från och med SQL Server 2022 (16.x) CU 14 och SQL Server 2019 (15.x) CU 28 innehåller containeravbildningarna det nya paketet mssql-tools18 . Den tidigare katalogen /opt/mssql-tools/bin håller på att fasas ut. Den nya katalogen för Microsoft ODBC 18-verktyg är /opt/mssql-tools18/bin, i linje med det senaste verktygserbjudandet. Mer information om ändringar och säkerhetsförbättringar finns i ODBC Driver 18.0 for SQL Server Released (ODBC Driver 18.0 for SQL Server Released).

Exemplen i den här artikeln använder docker kommandot . De flesta av dessa kommandon fungerar dock också med Podman. Podman tillhandahåller ett kommandoradsgränssnitt som liknar Docker-motorn. Du kan läsa mer om Podman.

Viktigt!

sqlcmd stöder för närvarande inte parametern MSSQL_PID när containrar skapas. Om du använder sqlcmd-instruktionerna i den här snabbstarten skapar du en container med utvecklarversionen av SQL Server. Använd cli-instruktionerna (kommandoradsgränssnittet) för att skapa en container med valfri licens. Mer information finns i Distribuera och ansluta till SQL Server Linux-containrar.

Förutsättningar

  • Docker Engine 1.8+ på alla Linux-distributioner som stöds. Mer information finns i Installera Docker.

Hämta och kör SQL Server Linux-containeravbildningen

Innan du påbörjar följande steg måste du välja önskat gränssnitt (bash, PowerShell eller cmd) överst i den här artikeln.

För bash-kommandona i den här artikeln sudo används. Om du inte vill använda sudo för att köra Docker kan du konfigurera en docker grupp och lägga till användare i den gruppen. Mer information finns i Steg efter installationen för Linux.

Hämta containeravbildningen från registret

Hämta LINUX-containeravbildningen SQL Server 2017 (14.x) från Microsoft Container Registry.

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

Den här snabbstarten skapar SQL Server 2017-containrar (14.x). Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

Föregående kommando hämtar den senaste LINUX-containeravbildningen för SQL Server 2017 (14.x). Om du vill hämta en specifik avbildning lägger du till ett kolon och taggnamnet, till exempel mcr.microsoft.com/mssql/server:2017-GA-ubuntu. Information om hur du ser alla tillgängliga avbildningar finns i Microsoft Artifact Registry.

Starta containern

Om du vill köra Linux-containeravbildningen med Docker kan du använda följande kommando från ett bash-gränssnitt eller upphöjd PowerShell-kommandotolk.

Viktigt!

Miljövariabeln SA_PASSWORD är inaktuell. Använd MSSQL_SA_PASSWORD i stället.

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

Om du använder PowerShell Core ersätter du de dubbla citattecknarna med enkla citattecken.

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

Försiktighet

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt. Om du inte följer dessa lösenordskrav kan containern inte konfigurera SQL Server och slutar fungera. Du kan undersöka felloggen med hjälp docker logs av kommandot .

Som standard skapar den här snabbstarten en container med Utvecklarutgåvan av SQL Server. Processen för att köra produktionsutgåvor i containrar skiljer sig något åt. Mer information finns i Köra produktionscontaineravbildningar.

Följande tabell innehåller en beskrivning av parametrarna i föregående docker run exempel:

Parameter Beskrivning
-e "ACCEPT_EULA=Y" Ange variabeln ACCEPT_EULA till valfritt värde för att bekräfta att du godkänner End-User licensavtalet. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_SA_PASSWORD=<password>" Ange ett eget starkt lösenord som är minst åtta tecken och som uppfyller lösenordsprincipen. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Ange en anpassad SQL Server-sortering istället för standard SQL_Latin1_General_CP1_CI_AS.
-p 1433:1433 Mappa en TCP-port i värdmiljön (första värdet) med en TCP-port i containern (andra värdet). I det här exemplet lyssnar SQL Server på TCP-port 1433 i containern, och denna port exponeras sedan till TCP-port 1433 på värden.
--name sql1 Ange ett anpassat namn för containern i stället för ett slumpmässigt genererat namn. Om du kör mer än en container kan du inte återanvända samma namn.
--hostname sql1 Används för att uttryckligen ange containerns värdnamn. Om du inte anger värdnamnet används som standard container-ID, som är ett slumpmässigt genererat system-GUID.
-d Kör containern i bakgrunden (daemon).
mcr.microsoft.com/mssql/server:2017-latest SQL Server Linux-containeravbildningen.

Visa lista över containrar

  1. Om du vill visa dina Docker-containrar använder du docker ps kommandot .

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

    Du bör se utdata som liknar följande exempel:

    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. Om kolumnen STATUS visar statusen Upkörs SQL Server i containern och lyssnar på porten som anges i kolumnen PORTS. Om kolumnen STATUS för din SQL Server-container visar Exited, se Felsöka SQL Server Docker-containrar. Servern är redo för anslutningar när SQL Server-felloggarna visar meddelandet: SQL Server is now ready for client connections. This is an informational message; no user action is required. Du kan granska SQL Server-felloggen i containern med kommandot :

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

    Parametern --hostname ändrar, som tidigare nämnts, containerns interna namn till ett anpassat värde. Det här värdet är det namn som returneras i följande Transact-SQL fråga:

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

    Att ange --hostname och --name till samma värde är ett bra sätt att enkelt identifiera målcontainern.

  3. Som ett sista steg ändrar du sa-lösenordet i en produktionsmiljö eftersom MSSQL_SA_PASSWORD är synligt i ps -eax utdata och lagras i miljövariabeln med samma namn.

Hämta och kör SQL Server Linux-containeravbildningen

Innan du påbörjar följande steg måste du välja önskat gränssnitt (bash, PowerShell eller cmd) överst i den här artikeln.

För bash-kommandona i den här artikeln sudo används. Om du inte vill använda sudo för att köra Docker kan du konfigurera en docker grupp och lägga till användare i den gruppen. Mer information finns i Steg efter installationen för Linux.

Hämta containern från registret

Hämta LINUX-containeravbildningen SQL Server 2019 (15.x) från Microsoft Container Registry.

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

Den här snabbstarten skapar SQL Server 2019-containrar (15.x). Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

Föregående kommando hämtar den senaste LINUX-containeravbildningen för SQL Server 2019 (15.x). Om du vill hämta en specifik avbildning lägger du till ett kolon och taggnamnet, till exempel mcr.microsoft.com/mssql/server:2019-GA-ubuntu. Information om hur du ser alla tillgängliga avbildningar finns i Microsoft Artifact Registry.

Starta containern

Om du vill köra Linux-containeravbildningen med Docker kan du använda följande kommando från ett bash-gränssnitt eller upphöjd PowerShell-kommandotolk.

Viktigt!

Miljövariabeln SA_PASSWORD är inaktuell. Använd MSSQL_SA_PASSWORD i stället.

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

Om du använder PowerShell Core ersätter du de dubbla citattecknarna med enkla citattecken.

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

Försiktighet

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

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

Försiktighet

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt. Om du inte följer dessa lösenordskrav kan containern inte konfigurera SQL Server och slutar fungera. Du kan undersöka felloggen med hjälp docker logs av kommandot .

Som standard skapar den här snabbstarten en container med Utvecklarutgåvan av SQL Server. Processen för att köra produktionsutgåvor i containrar skiljer sig något åt. Mer information finns i Köra produktionscontaineravbildningar.

Följande tabell innehåller en beskrivning av parametrarna i föregående docker run exempel:

Parameter Beskrivning
-e "ACCEPT_EULA=Y" Ange variabeln ACCEPT_EULA till valfritt värde för att bekräfta att du godkänner End-User licensavtalet. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_SA_PASSWORD=<password>" Ange ett eget starkt lösenord som är minst åtta tecken och som uppfyller lösenordsprincipen. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Ange en anpassad SQL Server-sortering istället för standard SQL_Latin1_General_CP1_CI_AS.
-p 1433:1433 Mappa en TCP-port i värdmiljön (första värdet) med en TCP-port i containern (andra värdet). I det här exemplet lyssnar SQL Server på TCP-port 1433 i containern, och denna port exponeras sedan till TCP-port 1433 på värden.
--name sql1 Ange ett anpassat namn för containern i stället för ett slumpmässigt genererat namn. Om du kör mer än en container kan du inte återanvända samma namn.
--hostname sql1 Används för att uttryckligen ange containerns värdnamn. Om du inte anger värdnamnet används som standard container-ID, som är ett slumpmässigt genererat system-GUID.
-d Kör containern i bakgrunden (daemon).
mcr.microsoft.com/mssql/server:2019-latest SQL Server Linux-containeravbildningen.

Visa lista över containrar

  1. Om du vill visa dina Docker-containrar använder du docker ps kommandot .

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

    Du bör se utdata som liknar följande exempel:

    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. Om kolumnen STATUS visar statusen Upkörs SQL Server i containern och lyssnar på porten som anges i kolumnen PORTS. Om kolumnen STATUS för din SQL Server-container visar Exited, se Felsöka SQL Server Docker-containrar. Servern är redo för anslutningar när SQL Server-felloggarna visar meddelandet: SQL Server is now ready for client connections. This is an informational message; no user action is required. Du kan granska SQL Server-felloggen i containern med kommandot :

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

    Parametern --hostname ändrar, som tidigare nämnts, containerns interna namn till ett anpassat värde. Det här värdet är det namn som returneras i följande Transact-SQL fråga:

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

    Att ange --hostname och --name till samma värde är ett bra sätt att enkelt identifiera målcontainern.

  3. Som ett sista steg ändrar du sa-lösenordet i en produktionsmiljö eftersom MSSQL_SA_PASSWORD är synligt i ps -eax utdata och lagras i miljövariabeln med samma namn.

Hämta och kör SQL Server Linux-containeravbildningen

Innan du påbörjar följande steg måste du välja önskat gränssnitt (bash, PowerShell eller cmd) överst i den här artikeln.

För bash-kommandona i den här artikeln sudo används. Om du inte vill använda sudo för att köra Docker kan du konfigurera en docker grupp och lägga till användare i den gruppen. Mer information finns i Steg efter installationen för Linux.

Hämta containeravbildningen från registret

Hämta LINUX-containeravbildningen SQL Server 2022 (16.x) från Microsoft Container Registry.

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

Den här snabbstarten skapar SQL Server 2022-containrar (16.x). Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

Föregående kommando hämtar den senaste LINUX-containeravbildningen för SQL Server 2022 (16.x). Om du vill hämta en specifik avbildning lägger du till ett kolon och taggnamnet, till exempel mcr.microsoft.com/mssql/server:2022-GA-ubuntu. Information om hur du ser alla tillgängliga avbildningar finns i Microsoft Artifact Registry.

Starta containern

Om du vill köra Linux-containeravbildningen med Docker kan du använda följande kommando från ett bash-gränssnitt eller upphöjd PowerShell-kommandotolk.

Viktigt!

Miljövariabeln SA_PASSWORD är inaktuell. Använd MSSQL_SA_PASSWORD i stället.

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

Om du använder PowerShell Core ersätter du de dubbla citattecknarna med enkla citattecken.

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

Försiktighet

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt. Om du inte följer dessa lösenordskrav kan containern inte konfigurera SQL Server och slutar fungera. Du kan undersöka felloggen med hjälp docker logs av kommandot .

Som standard skapar den här snabbstarten en container med Utvecklarutgåvan av SQL Server. Processen för att köra produktionsutgåvor i containrar skiljer sig något åt. Mer information finns i Köra produktionscontaineravbildningar.

Följande tabell innehåller en beskrivning av parametrarna i föregående docker run exempel:

Parameter Beskrivning
-e "ACCEPT_EULA=Y" Ange variabeln ACCEPT_EULA till valfritt värde för att bekräfta att du godkänner End-User licensavtalet. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_SA_PASSWORD=<password>" Ange ett eget starkt lösenord som är minst åtta tecken och som uppfyller lösenordsprincipen. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Ange en anpassad SQL Server-sortering istället för standard SQL_Latin1_General_CP1_CI_AS.
-p 1433:1433 Mappa en TCP-port i värdmiljön (första värdet) med en TCP-port i containern (andra värdet). I det här exemplet lyssnar SQL Server på TCP-port 1433 i containern, och denna port exponeras sedan till TCP-port 1433 på värden.
--name sql1 Ange ett anpassat namn för containern i stället för ett slumpmässigt genererat namn. Om du kör mer än en container kan du inte återanvända samma namn.
--hostname sql1 Används för att uttryckligen ange containerns värdnamn. Om du inte anger värdnamnet används som standard container-ID, som är ett slumpmässigt genererat system-GUID.
-d Kör containern i bakgrunden (daemon).
mcr.microsoft.com/mssql/server:2022-latest SQL Server Linux-containeravbildningen.

Ändra systemadministratörslösenordet

Systemadministratörskontot (sa) är systemadministratör på SQL Server-instansen som skapas under installationen. När du har skapat din SQL Server-container kan du identifiera den MSSQL_SA_PASSWORD miljövariabel som du angav genom att köra echo $MSSQL_SA_PASSWORD i containern. I säkerhetssyfte bör du ändra lösenordet sa i en produktionsmiljö.

  1. Välj ett starkt lösenord som ska användas för sa-kontot. Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  2. Använd docker exec för att köra sqlcmd för att ändra lösenordet med Hjälp av Transact-SQL. I följande exempel läss de gamla och nya lösenorden från användarindata.

    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>'"
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

    De senaste versionerna av sqlcmd är säkra som standard. Mer information om anslutningskryptering finns i sqlcmd-verktyg för Windows och Ansluta med sqlcmd- för Linux och macOS. Om anslutningen inte lyckas kan du lägga till alternativet -No i sqlcmd- för att ange att kryptering är valfritt, inte obligatoriskt.

Inaktivera SA-kontot som bästa praxis

Viktigt!

Du behöver dessa autentiseringsuppgifter för senare steg. Se till att skriva ned användar-ID och lösenord som du anger här.

När du ansluter till din SQL Server-instans med hjälp av systemadministratörskontot (sa) för första gången efter installationen är det viktigt att du följer dessa steg och sedan omedelbart inaktiverar sa-kontot som en metod för säkerhet.

  1. Skapa en ny inloggning och gör den till medlem i sysadmin serverroll.

  2. Anslut till SQL Server-instansen med den nya inloggningen som du skapade.

  3. Inaktivera det sa kontot, vilket rekommenderas för bästa praxis för säkerhet.

Visa lista över containrar

  1. Om du vill visa dina Docker-containrar använder du docker ps kommandot .

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

    Du bör se utdata som liknar följande exempel:

    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. Om kolumnen STATUS visar statusen Upkörs SQL Server i containern och lyssnar på porten som anges i kolumnen PORTS. Om kolumnen STATUS för din SQL Server-container visar Exited, se Felsöka SQL Server Docker-containrar. Servern är redo för anslutningar när SQL Server-felloggarna visar meddelandet: SQL Server is now ready for client connections. This is an informational message; no user action is required. Du kan granska SQL Server-felloggen i containern med kommandot :

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

    Parametern --hostname ändrar, som tidigare nämnts, containerns interna namn till ett anpassat värde. Det här värdet är det namn som returneras i följande Transact-SQL fråga:

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

    Att ange --hostname och --name till samma värde är ett bra sätt att enkelt identifiera målcontainern.

Hämta och kör SQL Server Linux-containeravbildningen

Innan du påbörjar följande steg måste du välja önskat gränssnitt (bash, PowerShell eller cmd) överst i den här artikeln.

För bash-kommandona i den här artikeln sudo används. Om du inte vill använda sudo för att köra Docker kan du konfigurera en docker grupp och lägga till användare i den gruppen. Mer information finns i Steg efter installationen för Linux.

Hämta containeravbildningen från registret

Hämta SQL Server 2025 (17.x) Förhandsversion av Linux-containeravbildningen från 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

Den här snabbstarten skapar SQL Server 2025(17.x) förhandsversionscontainrar. Om du föredrar att skapa Linux-containrar för olika versioner av SQL Server kan du läsa:

Föregående kommando hämtar den senaste SQL Server 2025 (17.x) Förhandsversion av Linux-containeravbildningen. Om du vill hämta en specifik avbildning lägger du till ett kolon och taggnamnet, till exempel mcr.microsoft.com/mssql/server:2025-GA-ubuntu. Information om hur du ser alla tillgängliga avbildningar finns i Microsoft Artifact Registry.

Starta containern

Om du vill köra Linux-containeravbildningen med Docker kan du använda följande kommando från ett bash-gränssnitt eller upphöjd PowerShell-kommandotolk.

Viktigt!

Miljövariabeln SA_PASSWORD är inaktuell. Använd MSSQL_SA_PASSWORD i stället.

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

Om du använder PowerShell Core ersätter du de dubbla citattecknarna med enkla citattecken.

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

Försiktighet

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt. Om du inte följer dessa lösenordskrav kan containern inte konfigurera SQL Server och slutar fungera. Du kan undersöka felloggen med hjälp docker logs av kommandot .

Som standard skapar den här snabbstarten en container med Utvecklarutgåvan av SQL Server. Processen för att köra produktionsutgåvor i containrar skiljer sig något åt. Mer information finns i Köra produktionscontaineravbildningar.

Följande tabell innehåller en beskrivning av parametrarna i föregående docker run exempel:

Parameter Beskrivning
-e "ACCEPT_EULA=Y" Ange variabeln ACCEPT_EULA till valfritt värde för att bekräfta att du godkänner End-User licensavtalet. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_SA_PASSWORD=<password>" Ange ett eget starkt lösenord som är minst åtta tecken och som uppfyller lösenordsprincipen. Obligatorisk inställning för SQL Server-avbildningen.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Ange en anpassad SQL Server-sortering istället för standard SQL_Latin1_General_CP1_CI_AS.
-p 1433:1433 Mappa en TCP-port i värdmiljön (första värdet) med en TCP-port i containern (andra värdet). I det här exemplet lyssnar SQL Server på TCP-port 1433 i containern, och denna port exponeras sedan till TCP-port 1433 på värden.
--name sql1 Ange ett anpassat namn för containern i stället för ett slumpmässigt genererat namn. Om du kör mer än en container kan du inte återanvända samma namn.
--hostname sql1 Används för att uttryckligen ange containerns värdnamn. Om du inte anger värdnamnet används som standard container-ID, som är ett slumpmässigt genererat system-GUID.
-d Kör containern i bakgrunden (daemon).
mcr.microsoft.com/mssql/server:2025-latest SQL Server Linux-containeravbildningen.

Ändra systemadministratörslösenordet

Systemadministratörskontot (sa) är systemadministratör på SQL Server-instansen som skapas under installationen. När du har skapat din SQL Server-container kan du identifiera den MSSQL_SA_PASSWORD miljövariabel som du angav genom att köra echo $MSSQL_SA_PASSWORD i containern. I säkerhetssyfte bör du ändra lösenordet sa i en produktionsmiljö.

  1. Välj ett starkt lösenord som ska användas för sa-kontot. Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  2. Använd docker exec för att köra sqlcmd för att ändra lösenordet med Hjälp av Transact-SQL. I följande exempel läss de gamla och nya lösenorden från användarindata.

    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>'"
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

    De senaste versionerna av sqlcmd är säkra som standard. Mer information om anslutningskryptering finns i sqlcmd-verktyg för Windows och Ansluta med sqlcmd- för Linux och macOS. Om anslutningen inte lyckas kan du lägga till alternativet -No i sqlcmd- för att ange att kryptering är valfritt, inte obligatoriskt.

Inaktivera SA-kontot som bästa praxis

Viktigt!

Du behöver dessa autentiseringsuppgifter för senare steg. Se till att skriva ned användar-ID och lösenord som du anger här.

När du ansluter till din SQL Server-instans med hjälp av systemadministratörskontot (sa) för första gången efter installationen är det viktigt att du följer dessa steg och sedan omedelbart inaktiverar sa-kontot som en metod för säkerhet.

  1. Skapa en ny inloggning och gör den till medlem i sysadmin serverroll.

  2. Anslut till SQL Server-instansen med den nya inloggningen som du skapade.

  3. Inaktivera det sa kontot, vilket rekommenderas för bästa praxis för säkerhet.

Visa lista över containrar

  1. Om du vill visa dina Docker-containrar använder du docker ps kommandot .

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

    Du bör se utdata som liknar följande exempel:

    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. Om kolumnen STATUS visar statusen Upkörs SQL Server i containern och lyssnar på porten som anges i kolumnen PORTS. Om kolumnen STATUS för din SQL Server-container visar Exited, se Felsöka SQL Server Docker-containrar. Servern är redo för anslutningar när SQL Server-felloggarna visar meddelandet: SQL Server is now ready for client connections. This is an informational message; no user action is required. Du kan granska SQL Server-felloggen i containern med kommandot :

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

    Parametern --hostname ändrar, som tidigare nämnts, containerns interna namn till ett anpassat värde. Det här värdet är det namn som returneras i följande Transact-SQL fråga:

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

    Att ange --hostname och --name till samma värde är ett bra sätt att enkelt identifiera målcontainern.

Ansluta till SQL Server

Följande steg använder kommandoradsverktyget SQL Server, sqlcmd-verktyget, i containern för att ansluta till SQL Server.

  1. Använd kommandot docker exec -it för att starta ett interaktivt bash-gränssnitt i containern som körs. I följande exempel sql1 är namnet som anges av parametern --name när du skapade containern.

    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
  1. När du är inne i containern ansluter du lokalt med sqlcmd genom att använda den fullständiga sökvägen.

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

    De senaste versionerna av sqlcmd är säkra som standard. Mer information om anslutningskryptering finns i sqlcmd-verktyg för Windows och Ansluta med sqlcmd- för Linux och macOS. Om anslutningen inte lyckas kan du lägga till alternativet -No i sqlcmd- för att ange att kryptering är valfritt, inte obligatoriskt.

    Du kan utelämna lösenordet på kommandoraden för att uppmanas att ange det. Till exempel:

    /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
    
  1. När du är inne i containern ansluter du lokalt med sqlcmd genom att använda den fullständiga sökvägen.

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

    De senaste versionerna av sqlcmd är säkra som standard. Mer information om anslutningskryptering finns i sqlcmd-verktyg för Windows och Ansluta med sqlcmd- för Linux och macOS. Om anslutningen inte lyckas kan du lägga till alternativet -No i sqlcmd- för att ange att kryptering är valfritt, inte obligatoriskt.

    Du kan utelämna lösenordet på kommandoraden för att uppmanas att ange det. Till exempel:

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
    
  1. Om det blir framgångsrikt ska du komma till en sqlcmd kommandotolk: 1>.

Skapa och fråga efter data

Följande avsnitt beskriver hur du använder sqlcmd och Transact-SQL för att skapa en ny databas, lägga till data och köra en fråga.

Skapa en ny databas

Följande steg skapar en ny databas med namnet TestDB.

  1. Från kommandotolken sqlcmd klistrar du in följande Transact-SQL kommando för att skapa en testdatabas:

    CREATE DATABASE TestDB;
    
  2. På nästa rad skriver du en fråga för att returnera namnet på alla databaser på servern:

    SELECT name
    FROM sys.databases;
    
  3. De föregående två kommandona kördes inte omedelbart. Skriv GO på en ny rad för att köra föregående kommandon:

    GO
    

Infoga data

Skapa sedan en ny tabell Inventoryoch infoga två nya rader.

  1. Från kommandotolken sqlcmd växlar du kontexten till den nya TestDB databasen:

    USE TestDB;
    
  2. Skapa en ny tabell med namnet Inventory:

    CREATE TABLE Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT
    );
    
  3. Infoga data i den nya tabellen:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Skriv GO för att köra föregående kommandon:

    GO
    

Välj data

Kör nu en fråga för att returnera data från tabellen Inventory.

  1. Från kommandotolken sqlcmd anger du en fråga som returnerar rader från tabellen Inventory där kvantiteten är större än 152:

    SELECT *
    FROM Inventory
    WHERE quantity > 152;
    
  2. Kör kommandot:

    GO
    

Avsluta kommandotolken för sqlcmd

  1. Om du vill avsluta din sqlcmd--session skriver du QUIT:

    QUIT
    
  2. Om du vill avsluta den interaktiva kommandotolken i containern skriver du exit. Containern fortsätter att köras när du har avslutat det interaktiva bash-gränssnittet.

Ansluta utanför containern

Du kan också ansluta till SQL Server-instansen på Docker-datorn från alla externa Linux-, Windows- eller macOS-verktyg som stöder SQL-anslutningar. Det externa verktyget använder IP-adressen för värddatorn.

Följande steg använder sqlcmd utanför containern för att ansluta till SQL Server som körs i containern. De här stegen förutsätter att du redan har SQL Server-kommandoradsverktyg installerade utanför containern. Samma principer gäller när du använder andra verktyg, men anslutningsprocessen är unik för varje verktyg.

  1. Hitta IP-adressen för containerns värddator med hjälp av ifconfig eller ip addr.

  2. I det här exemplet installerar du sqlcmd-verktyget på klientdatorn. Mer information finns i sqlcmd-verktyget eller Installera kommandoradsverktygen sqlcmd och bcp SQL Server i Linux.

  3. Kör sqlcmd som anger IP-adressen och porten som mappas till port 1433 i containern. I det här exemplet är porten samma som port 1433 på värddatorn. Om du har angett en annan mappad port på värddatorn använder du den här. Du måste också öppna lämplig inkommande port i brandväggen för att tillåta anslutningen.

    De senaste versionerna av sqlcmd är säkra som standard. Om anslutningen inte lyckas och du använder version 18 eller senare kan du lägga till -No alternativet i sqlcmd för att ange att kryptering är valfritt, inte obligatoriskt.

    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>"
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  4. Kör Transact-SQL kommandon. När du är klar skriver du QUIT.

Andra vanliga verktyg för att ansluta till SQL Server är:

Ta bort containern

Om du vill ta bort SQL Server-containern som används i den här självstudien kör du följande kommandon:

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

Dockerdemo

När du har använt SQL Server Linux-containeravbildningen för Docker kanske du vill veta hur Docker används för att förbättra utveckling och testning. Följande video visar hur Docker kan användas i ett scenario för kontinuerlig integrering och distribution.

 

Bidra till SQL-dokumentation

Visste du att du kan redigera SQL-innehåll själv? Om du gör det hjälper du inte bara till att förbättra vår dokumentation, utan du får även kredit som deltagare på sidan.

Mer information finns i Redigera Microsoft Learn-dokumentation.