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:
- Kör SQL Server 2017-containeravbildningen med Docker
- Kör SQL Server 2019-containeravbildningen med Docker
- Kör SQL Server 2022-containeravbildningen med Docker
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 1433
lä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.
Använd kommandot
docker exec -it
för att starta ett interaktivt bash-gränssnitt i containern som körs. I följande exempel äre69e056c702d
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
ellere69
i stället för det fullständiga ID:t. Om du vill ta reda på container-ID:t kör du kommandotdocker ps -a
.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.När du är klar med sqlcmdskriver du
exit
.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:
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.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 med2019-CU18-ubuntu-20.04
.docker pull mcr.microsoft.com/mssql/server:<image_tag>
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ändMSSQL_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_PID
uttrycker 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_PID
finns 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.
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.
Stoppa SQL Server-containern med kommandot
docker stop
.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.
Verifiera dina databaser och data i den nya containern.
Valfritt, ta bort den gamla containern med
docker rm
.
Relaterat innehåll
- 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
- Konfigurera och anpassa SQL Server Linux-containrar
- Se GitHub-lagringsplatsen mssql-docker för resurser, feedback och kända problem
- Felsöka SQL Server Docker-containrar
- Hög tillgänglighet för SQL Server-containrar
- Säkra SQL Server Linux-behållare
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