Dela via


Distribuera och ansluta till SQL Server Linux-containrar

gäller för:SQL Server – Linux

Den här artikeln beskriver hur du distribuerar och ansluter till SQL Server Linux-containrar.

Andra distributionsscenarier finns i:

Notera

Den här artikeln fokuserar specifikt på att använda bilden mssql-server-linux. SQL Server-distributioner i Windows-containrar omfattas inte av stöd. För utveckling och testning kan du skapa egna anpassade containeravbildningar som fungerar med SQL Server i Windows-containrar. Exempelfiler finns på GitHub. Exempelfiler är endast som referens.

Viktig

Innan du väljer att köra en SQL Server-container för produktionsanvändning bör du läsa Teknisk supportprincip för Microsoft SQL Server för att säkerställa att du kör en konfiguration som stöds.

Den här videon på 6 minuter ger en introduktion till att köra SQL Server på containrar:

Dra och kör containeravbildningen

Om du vill hämta och köra Docker-containeravbildningarna för SQL Server följer du kraven och stegen i följande snabbstart:

Den här konfigurationsartikeln innehåller ytterligare användningsscenarier i följande avsnitt.

Ansluta och fråga

Du kan ansluta och fråga SQL Server i en container från antingen utanför containern eller inifrån containern. I följande avsnitt beskrivs båda scenarierna.

Verktyg utanför containern

Du kan ansluta till SQL Server-instansen på containervärden från vilket som helst av de externa Linux-, Windows- eller macOS-verktyg som stöder SQL-anslutningar. Några vanliga verktyg är:

I följande exempel används sqlcmd- för att ansluta till SQL Server som körs i en container. IP-adressen i anslutningssträngen är IP-adressen för den värddator som kör containern.

Not

Nyare versioner av sqlcmd- (i mssql-tools18) är säkra som standard. Om du använder version 18 eller senare måste du lägga till alternativet No för att sqlcmd för att ange att kryptering är valfritt, inte obligatoriskt.

sqlcmd -S 10.3.2.4 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4 -U sa -P "<YourPassword>"

Om du mappade en värdport som inte var standard 1433lägger du till porten i anslutningssträngen. Om du till exempel har angett -p 1400:1433 i kommandot docker run ansluter du genom att uttryckligen ange port 1400.

sqlcmd -S 10.3.2.4,1400 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1400 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1400 -U sa -P "<YourPassword>"

Verktyg i containern

Från och med SQL Server 2017 (14.x) ingår kommandoradsverktygen SQL Server i containeravbildningen. Om du ansluter till bilden med en interaktiv kommandotolk kan du köra verktygen lokalt.

  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 är e69e056c702d container-ID:t.

    docker exec -it e69e056c702d "bash"
    

    Tips

    Du behöver inte alltid ange hela container-ID:t. Du behöver bara ange tillräckligt med tecken för att identifiera det unikt. Så i det här exemplet kan det räcka att använda e6 eller e69 i stället för det fullständiga ID:t. Om du vill ta reda på container-ID:t kör du kommandot docker ps -a.

  2. När du är inne i containern ansluter du lokalt med sqlcmd genom att använda dess fullständiga sökväg.

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P '<YourPassword>'
    

    Not

    Nyare versioner 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.

  3. När du är klar med sqlcmdskriver du exit.

  4. När du är klar med den interaktiva kommandotolken skriver du exit. Containern fortsätter att köras när du har avslutat det interaktiva bash-gränssnittet.

Kontrollera containerversionen

Om du vill veta vilken version av SQL Server som körs i en container som körs kör du följande kommando för att visa den. Ersätt <Container ID or name> med målcontainerns ID eller namn. Ersätt <password> med SQL Server-lösenordet för systemadministratörskontot (sa).

docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P '<password>' \
-Q 'SELECT @@VERSION'

Not

Nyare versioner 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.

docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd `
-S localhost -U sa -P "<password>" `
-Q "SELECT @@VERSION"

Not

Nyare versioner 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.

docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd ^
-S localhost -U sa -P "<password>" ^
-Q "SELECT @@VERSION"

Notera

Nyare versioner 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 också identifiera SQL Server-versionen och versionsnumret för en målcontaineravbildning. Följande kommando visar SQL Server-versionen och bygginformationen för mcr.microsoft.com/mssql/server:2022-latest avbildningen. Det gör den genom att köra en ny container med en miljövariabel PAL_PROGRAM_INFO=1. Den genererade containern avslutas omedelbart och kommandot docker rm tar bort den.

docker run -e PAL_PROGRAM_INFO=1 --name sqlver \
-ti mcr.microsoft.com/mssql/server:2022-latest && \
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver `
-ti mcr.microsoft.com/mssql/server:2022-latest; `
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver ^
-ti mcr.microsoft.com/mssql/server:2022-latest && ^
docker rm sqlver

Föregående kommandon visar versionsinformation som liknar följande utdata:

sqlservr
  Version 16.0.1000.6
  Build ID d81e9b6de06534e649bd57dd609aa3050f5e380f361b7f8a80a80eeb71e7422c
  Build Type release
  Git Version 2aede92f
  Built at Tue Nov 01 06:11:40 GMT 2022

PAL
  Build ID 754097e8f0db68f559e1cbc9d46952ac9fd518b5da9f12964ef40fc9033720e3
  Build Type release
  Git Version d88e3e1130
  Built at Tue Nov 01 06:08:02 GMT 2022

Packages
  system.security                         mssql-16.0.1000.6_26_official-release
  system.certificates                     mssql-16.0.1000.6_26_official-release
  sqlagent                                16.0.1000.6
  system.wmi                              10.0.17763.2061.202107231
  system.netfx                            4.7.0.0.202104262
  system                                  mssql-16.0.1000.6_26_official-release
  system.common                           10.0.17763.2061.202107231
  sqlservr                                16.0.1000.6
  secforwarderxplat                       16.0.1000.6

Köra en specifik SQL Server-containeravbildning

Notera

  • Från och med SQL Server 2019 (15.x) CU3 stöds Ubuntu 18.04.
  • Från och med SQL Server 2019 (15.x) CU10 stöds Ubuntu 20.04.
  • Du kan hämta en lista över alla tillgängliga taggar för mssql/server på https://mcr.microsoft.com/v2/mssql/server/tags/list.

Det finns scenarier där du kanske inte vill använda den senaste SQL Server-containeravbildningen. Om du vill köra en specifik SQL Server-containeravbildning använder du följande steg:

  1. Identifiera Docker-tag för den version som du vill använda. Information om hur du visar tillgängliga taggar finns i Microsoft Artifact Registry.

  2. Hämta SQL Server-containeravbildningen med taggen . Om du till exempel vill hämta 2019-CU18-ubuntu-20.04-avbildningen ersätter du <image_tag> i följande kommando med 2019-CU18-ubuntu-20.04.

    docker pull mcr.microsoft.com/mssql/server:<image_tag>
    
  3. Om du vill köra en ny container med avbildningen anger du taggnamnet i kommandot docker run. Ersätt <image_tag> med den version som du vill köra i följande kommando. 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.

    Viktig

    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 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
    

De här stegen kan också användas för att nedgradera en befintlig container. Du kanske till exempel vill backa eller nedgradera en körande container för felsökning eller testning. Om du vill nedgradera en container som körs måste du använda en beständighetsteknik för datamappen. Följ samma steg som beskrivs i avsnittet uppgradering, men ange taggnamnet för den äldre versionen när du kör den nya containern.

Kör RHEL-baserade containeravbildningar

Dokumentationen för SQL Server Linux-containeravbildningar pekar på Ubuntu-baserade containrar. Från och med SQL Server 2019 (15.x) kan du använda containrar baserat på Red Hat Enterprise Linux (RHEL). Ett exempel på bilden för RHEL ser ut som mcr.microsoft.com/mssql/rhel/server:2019-CU15-rhel-8.

Följande kommando hämtar till exempel containern Kumulativ uppdatering 18 för SQL Server 2019 (15.x) som använder RHEL 8:

docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4

Köra containeravbildningar för produktion

Snabbstarten i föregående avsnitt kör den kostnadsfria utvecklarversionen av SQL Server från Microsoft Artifact Registry. Det mesta av informationen gäller fortfarande om du vill köra produktionscontaineravbildningar, till exempel Enterprise-, Standard- eller Webbversioner. Det finns dock några skillnader som beskrivs här.

  • Du kan bara använda SQL Server i en produktionsmiljö om du har en giltig licens. Du kan skaffa en kostnadsfri SQL Server Express-produktionslicens här. SQL Server Standard- och Enterprise-licenser är tillgängliga via Microsoft Volume Licensing.

  • Containeravbildningen Developer kan också konfigureras för att köra produktionsversionerna.

Om du vill köra en produktionsutgåva granskar du kraven och kör procedurerna i snabbstart. Du måste ange produktionsversionen med miljövariabeln MSSQL_PID. I följande exempel visas hur du kör den senaste SQL Server 2022-containeravbildningen (16.x) för Enterprise Core-utgåvan.

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 --name sqlenterprise \
-e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-e 'MSSQL_PID=EnterpriseCore' -p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run --name sqlenterprise `
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 `
-d "mcr.microsoft.com/mssql/server:2022-latest"
docker run --name sqlenterprise ^
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 ^
-d "mcr.microsoft.com/mssql/server:2022-latest"

Viktig

Genom att skicka värdet Y till miljövariabeln ACCEPT_EULA och ett versionsvärde för att MSSQL_PIDuttrycker du att du har en giltig och befintlig licens för den version och version av SQL Server som du tänker använda. Du samtycker också till att din användning av SQL Server-programvara som körs i en containeravbildning styrs av villkoren i din SQL Server-licens.

En fullständig lista över möjliga värden för MSSQL_PIDfinns i Konfigurera SQL Server-inställningar med miljövariabler i Linux.

Köra flera SQL Server-containrar

Docker är ett sätt att köra flera SQL Server-containrar på samma värddator. Använd den här metoden för scenarier som kräver flera instanser av SQL Server på samma värd. Varje container måste exponera sig på en annan port.

I följande exempel skapas två SQL Server 2017-containrar (14.x) och mappar dem till portar 1401 och 1402 på värddatorn.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest

I följande exempel skapas två SQL Server 2019-containrar (15.x) och mappar dem till portar 1401 och 1402 på värddatorn.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest

I följande exempel skapas två SQL Server 2022-containrar (16.x) och mappar dem till portar 1401 och 1402 på värddatorn.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -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.

Nu körs två instanser av SQL Server i separata containrar. Klienter kan ansluta till respektive SQL Server-instans med hjälp av IP-adressen för containervärd och portnumret för containern.

Not

Nyare versioner av sqlcmd- (i mssql-tools18) är säkra som standard. Om du använder version 18 eller senare måste du lägga till alternativet No för att sqlcmd för att ange att kryptering är valfritt, inte obligatoriskt.

sqlcmd -S 10.3.2.4,1401 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1402 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U sa -P "<YourPassword>"

Uppgradera SQL Server i containrar

Om du vill uppgradera containeravbildningen med Docker identifierar du först taggen för versionen för uppgraderingen. Hämta den här versionen från registret med kommandot docker pull:

docker pull mcr.microsoft.com/mssql/server:<image_tag>

Detta uppdaterar SQL Server-avbildningen för alla nya containrar som du skapar, men den uppdaterar inte SQL Server i containrar som körs. För att göra detta måste du skapa en ny container med den senaste SQL Server-containeravbildningen och migrera dina data till den nya containern.

  1. Se till att du använder någon av de datapersistence-tekniker för din befintliga SQL Server-container. På så sätt kan du starta en ny container med samma data.

  2. Stoppa SQL Server-containern med kommandot docker stop.

  3. Skapa en ny SQL Server-container med docker run och ange antingen en mappad värdkatalog eller en datavolymcontainer. Se till att använda den specifika taggen för din SQL Server-uppgradering. Den nya containern använder nu en ny version av SQL Server med dina befintliga SQL Server-data.

    Viktig

    Uppgradering stöds endast mellan RC1, RC2 och GA just nu.

  4. Verifiera dina databaser och data i den nya containern.

  5. Valfritt, ta bort den gamla containern med docker rm.

  • Kom igång med SQL Server 2017-containeravbildningar (14.x) i Docker genom att gå igenom snabbstart
  • Kom igång med SQL Server 2019-containeravbildningar (15.x) i Docker genom att gå igenom snabbstart
  • Kom igång med SQL Server 2022-containeravbildningar (16.x) i Docker genom att gå igenom snabbstart

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 Så här bidrar du till SQL Server-dokumentationen