Felsöka SQL Server Docker-containrar

Gäller för:SQL Server i Linux

Den här artikeln beskriver vanliga fel som uppstår när du distribuerar och använder SQL Server Docker-containrar och ger felsökningstekniker för att hjälpa till att lösa dem.

Docker-kommandofel

Om du får fel för några docker-kommandon, kontrollera att Docker-tjänsten körs och försök att köra med utökade behörigheter.

I Linux kan du till exempel få följande fel när du kör docker kommandon:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Om du får det här felet i Linux kan du prova att köra samma kommandon som föregås av sudo. Om det misslyckas kontrollerar du att Docker-tjänsten körs och startar den om det behövs.

sudo systemctl status docker
sudo systemctl start docker

På Windows, kontrollera att du startar PowerShell eller din kommandoprompt som administratör.

Important

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

Startfel för SQL Server-container

Om SQL Server-containern inte kan köras kan du prova följande tester:

  • Om du får ett fel som failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use., försöker du mappa containerporten 1433 till en port som redan används. Detta kan inträffa om du kör SQL Server lokalt på värddatorn. Det kan också inträffa om du startar två SQL Server-containrar och försöker mappa dem båda till samma värdport. Om detta inträffar använder du parametern -p för att mappa containerporten 1433 till en annan värdport. Ett exempel:

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

    Caution

    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 får ett fel, till exempel Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission denied när du försöker starta en container, lägger du till användaren i docker-gruppen i Ubuntu. Logga sedan ut och in igen eftersom denna ändring påverkar nya sessioner.

    usermod -aG docker $USER
    
  • Kontrollera om det finns felmeddelanden från containern.

    docker logs e69e056c702d
    
  • Kontrollera att du uppfyller minimikraven för minne och disk som anges i avsnittet krav i snabbstartsartikeln .

  • Om du använder någon programvara för containerhantering, se till att den stöder containerprocesser som körs med rootbehörighet. sqlservr-processen i containern körs som root.

  • Om SQL Server Docker-containern avslutas omedelbart efter start kontrollerar du docker-loggarna. Om du använder PowerShell i Windows med docker run kommandot använder du dubbla citattecken i stället för enkla citattecken. Använd enkla citattecken med PowerShell Core.

  • Granska konfigurations- och felloggarna för SQL Server.

Aktivera dumpfångster

Om SQL Server-processen misslyckas i containern bör du skapa en ny container med SYS_PTRACE aktiverad. Detta lägger till Linux-funktionen för att spåra en process, vilket är nödvändigt för att skapa en dumpfil på ett undantag. Dumpfilen kan användas av stöd för att felsöka problemet. Följande docker-körningskommando aktiverar den här funktionen.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest

Caution

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.

Sql Server-anslutningsfel

Om du inte kan ansluta till SQL Server-instansen som körs i containern kan du prova följande tester:

  • Kontrollera att SQL Server-containern körs genom att titta på kolumnen STATUS för docker ps -a utdata. Om inte, använd docker start <Container ID> för att starta den.

  • Om du har mappat till en värdport som inte är standard (inte 1433) kontrollerar du att du anger porten i din anslutningssträng. Du kan se dina portinställningar i PORTS-kolumnen i docker ps -a-utdata. Till exempel ansluter följande kommando sqlcmd till en container som lyssnar på port 1401:

    sqlcmd -S 10.3.2.4,1401 -U sa -P '<password>'
    
    sqlcmd -S 10.3.2.4,1401 -U sa -P "<password>"
    
    sqlcmd -S 10.3.2.4,1401 -U sa -P "<password>"
    
  • Om du använde docker run med en befintlig mappad datavolym eller datavolymcontainer ignorerar SQL Server värdet MSSQL_SA_PASSWORD för. I stället används det förkonfigurerade sa kontolösenordet från SQL Server-data i datavolymen eller datavolymcontainern. Kontrollera att du använder sa lösenordet som är associerat med de data som du ansluter till.

  • Granska konfigurations- och felloggarna för SQL Server.

SQL Server-tillgänglighetsgrupper

Om du använder Docker med SQL Server-tillgänglighetsgrupper finns det två ytterligare krav.

  • Mappa porten som används för replikkommunikation (standard 5022). Ange -p 5022:5022 till exempel som en del av kommandot docker run .

  • Ange uttryckligen containerns värdnamn med parametern -h YOURHOSTNAME för docker run kommandot. Det här värdnamnet används när du konfigurerar tillgänglighetsgruppen. Om du inte anger det med -här container-ID:t standard.

Konfigurations- och felloggar för SQL Server

Du kan titta på konfigurations- och felloggarna för SQL Server i /var/opt/mssql/log. Om containern inte körs, starta först containern. Använd sedan en interaktiv kommandoprompt för att granska loggarna. Du kan hämta container-ID:t genom att köra kommandot docker ps.

docker start <Container ID>
docker exec -it <Container ID> "bash"

Från Bash-sessionen i din container, kör följande kommandon:

cd /var/opt/mssql/log
cat setup*.log
cat errorlog

Tip

Om du monterade en värdkatalog till /var/opt/mssql när du skapade containern kan du i stället titta i loggkatalogen på den mappade sökvägen på värddatorn.

Kör kommandon i en container

Om du har en container som körs kan du köra kommandon i containern från en värdterminal.

För att få container-ID:t, kör:

docker ps -a

För att starta en Bash-terminal i containern, kör:

docker exec -it <Container ID> /bin/bash

Nu kan du köra kommandon som om du kör dem i terminalen i containern. När du är klar skriver du exit. Detta avslutar den interaktiva kommandosessionen, men din container fortsätter att köras.

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.