Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server na Linuxu
Tento článek se zabývá běžnými chybami při nasazování a používání kontejnerů Dockeru SQL Serveru a poskytuje techniky řešení potíží, které vám pomůžou tento problém vyřešit.
Chyby příkazů Dockeru
Pokud dojde k chybám u všech docker příkazů, ujistěte se, že je spuštěná služba Dockeru, a pokuste se spustit se zvýšenými oprávněními.
Například v Linuxu se při spouštění docker příkazů může zobrazit následující chyba:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Pokud se vám tato chyba zobrazí v systému Linux, zkuste spustit stejné příkazy s předponou sudo. Pokud se to nezdaří, ověřte, že je služba Docker spuštěná, a v případě potřeby ji spusťte.
sudo systemctl status docker
sudo systemctl start docker
Ve Windows ověřte, že spouštíte PowerShell nebo příkazový řádek jako správce.
Important
Proměnná prostředí SA_PASSWORD se již nepoužívá. Místo toho použijte MSSQL_SA_PASSWORD.
Chyby při spuštění kontejneru SQL Serveru
Pokud se kontejner SQL Serveru nepodaří spustit, vyzkoušejte následující testy:
Pokud se zobrazí například chyba
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use., pokoušíte se namapovat port kontejneru 1433 na port, který se už používá. K tomu může dojít, pokud používáte SQL Server místně na hostitelském počítači. Může k tomu dojít také v případě, že spustíte dva kontejnery SQL Serveru a pokusíte se je namapovat na stejný port hostitele. V takovém případě pomocí-pparametru namapujte port kontejneru 1433 na jiný port hostitele. Příklad: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
Vaše heslo by mělo splňovat výchozí zásady hesla pro SQL Server. Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.
Pokud se zobrazí chyba, například
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 deniedpři pokusu o spuštění kontejneru, přidejte uživatele do skupiny Dockeru v Ubuntu. Potom se znovu odhlaste a přihlaste se, protože tato změna ovlivní nové relace.usermod -aG docker $USERZkontrolujte, jestli v kontejneru nejsou nějaké chybové zprávy.
docker logs e69e056c702dUjistěte se, že splňujete minimální požadavky na paměť a disk uvedené v části Požadavky článku rychlého startu.
Pokud používáte jakýkoli software pro správu kontejnerů, ujistěte se, že podporuje procesy kontejnerů spuštěné jako root. Proces sqlservr v kontejneru běží jako uživatel root.
Pokud se kontejner Dockeru SQL Serveru okamžitě po spuštění ukončí, zkontrolujte protokoly Dockeru. Pokud používáte PowerShell ve Windows s příkazem
docker run, použijte místo jednoduchých uvozovek dvojité uvozovky. V PowerShellu Core použijte jednoduché uvozovky.Zkontrolujte instalační a chybové protokoly SQL Serveru.
Povolení zachytávání výpisů paměti
Pokud proces SQL Serveru v kontejneru selže, měli byste vytvořit nový kontejner s povoleným SYS_PTRACE . Tím se přidá funkce Linuxu pro trasování procesu, která je nezbytná pro vytvoření souboru s výpisem paměti při výskytu výjimky. Soubor s výpisem paměti může pomoci s řešením tohoto problému. Následující příkaz docker run tuto funkci povolí.
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
Vaše heslo by mělo splňovat výchozí zásady hesla pro SQL Server. Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.
Selhání připojení k SQL Serveru
Pokud se nemůžete připojit k instanci SQL Serveru spuštěné v kontejneru, vyzkoušejte následující testy:
Zkontrolujte, jestli je kontejner SQL Serveru spuštěný, a to tak, že se podíváte na sloupec STATUS výstupu
docker ps -a. Pokud ne, použijte ke spuštěnídocker start <Container ID>.Pokud jste namapovali na nevýchozí port hostitele (ne 1433), ujistěte se, že v připojovacím řetězci uvádíte port. Mapování portů můžete zobrazit ve sloupci PORTY výstupu
docker ps -a. Například následující příkaz připojí sqlcmd ke kontejneru naslouchajícímu na portu 1401:sqlcmd -S 10.3.2.4,1401 -U sa -P '<YourPassword>'sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"Pokud jste použili
docker runs existujícím mapovaným datovým svazkem nebo kontejnerem datovéhoMSSQL_SA_PASSWORDsvazku, SQL Server ignoruje hodnotu . Místo toho se předkonfigurovanésaheslo účtu používá z dat SQL Serveru v datovém svazku nebo kontejneru datového svazku. Ověřte, že používátesaheslo přidružené k datům, ke kterým se připojujete.Zkontrolujte instalační a chybové protokoly SQL Serveru.
Skupiny dostupnosti SQL Serveru
Pokud používáte Docker se skupinami dostupnosti SQL Serveru, existují dva další požadavky.
Namapujte port, který se používá pro komunikaci repliky (výchozí 5022). Můžete například zadat
-p 5022:5022jako součástdocker runpříkazu.Explicitně nastavte název hostitele kontejneru
-h YOURHOSTNAMEpomocí parametrudocker runpříkazu. Tento název hostitele se používá při konfiguraci skupiny dostupnosti. Pokud ho-hnezadáte, nastaví se jako výchozí ID kontejneru.
Nastavení SQL Serveru a protokoly chyb
V souboru /var/opt/mssql/log se můžete podívat na instalační a chybové protokoly SQL Serveru. Pokud kontejner není spuštěný, nejprve kontejner spusťte. Pak pomocí interaktivního příkazového řádku zkontrolujte protokoly. ID kontejneru můžete získat spuštěním příkazu docker ps.
docker start <ContainerID>
docker exec -it <ContainerID> "bash"
Z relace Bash uvnitř kontejneru spusťte následující příkazy:
cd /var/opt/mssql/log
cat setup*.log
cat errorlog
Tip
Pokud jste při vytváření kontejneru připojili adresář hostitele k /var/opt/mssql, můžete místo toho vyhledat složku logů na mapované cestě na hostiteli.
Spouštění příkazů v kontejneru
Pokud máte spuštěný kontejner, můžete v kontejneru spouštět příkazy z hostitelského terminálu.
Chcete-li zjistit ID kontejneru, spusťte:
docker ps -a
Chcete-li v kontejneru spustit terminál bash, spusťte:
docker exec -it <Container ID> /bin/bash
Teď můžete spouštět příkazy, jako kdybyste je spouštěli v terminálu uvnitř kontejneru. Po dokončení zadejte exit. Tím se ukončí interaktivní příkazová relace, ale váš kontejner poběží dál.
Související obsah
Přispějte k dokumentaci SQL
Věděli jste, že obsah SQL můžete upravovat sami? Pokud to uděláte, nejen že vám pomůžete vylepšit naši dokumentaci, ale také jste získali kredit jako přispěvatel na stránku.
Další informace naleznete v Upravit dokumentaci Microsoft Learn.