Nasazení a připojení ke kontejnerům SQL Serveru s Linuxem
platí pro:SQL Server – Linux
Tento článek vysvětluje, jak nasadit a připojit se ke kontejnerům SQL Serveru s Linuxem.
Další scénáře nasazení najdete tady:
Poznámka
Tento článek se konkrétně zaměřuje na použití obrázku mssql-server-linux
. Na nasazení SQL Serveru v kontejnerech Windows se nevztahuje podpora. Pro účely vývoje a testování můžete vytvořit vlastní image kontejnerů pro práci s SQL Serverem v kontejnerech Windows. Ukázkové soubory jsou k dispozici na GitHubu . Ukázkové soubory jsou určené pouze pro referenci.
Důležitý
Než se rozhodnete spustit kontejner SQL Serveru pro případy použití v produkčním prostředí, projděte si zásady Technické podpory pro Microsoft SQL Server a ujistěte se, že používáte podporovanou konfiguraci.
Toto 6minutové video obsahuje úvod do spouštění SQL Serveru v kontejnerech:
Stažení a spuštění obrazu kontejneru
Pokud chcete vyžádat a spustit image kontejneru Dockeru pro SQL Server, postupujte podle požadavků a kroků v následujícím rychlém startu:
- spuštění image kontejneru SQL Serveru 2017 pomocí dockeru
- Spuštění image kontejneru SQL Serveru 2019 pomocí dockeru
- spuštění image kontejneru SQL Serveru 2022 pomocí dockeru
Tento článek o konfiguraci obsahuje další scénáře použití v následujících částech.
Připojení a dotazování
Můžete se připojit k SQL Serveru a provádět dotazy v kontejneru buď zvenčí kontejneru, nebo zevnitř něj. Následující části popisují oba scénáře.
Nástroje mimo kontejner
K instanci SQL Serveru na hostiteli kontejneru se můžete připojit z libovolného externího nástroje pro Linux, Windows nebo macOS, který podporuje připojení SQL. Mezi běžné nástroje patří:
Následující příklad používá sqlcmd pro připojení k SQL Serveru spuštěného v kontejneru. IP adresa v připojovacím řetězci je IP adresa hostitelského počítače, na kterém běží kontejner.
Poznámka
Novější verze sqlcmd (v mssql-tools18) jsou ve výchozím nastavení zabezpečené. Pokud používáte verzi 18 nebo vyšší, musíte přidat možnost No
k sqlcmd, abyste určili, že šifrování je volitelné, nikoli povinné.
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>"
Pokud jste namapovali port hostitele, který není výchozí 1433
, zahrňte tento port v připojovacím řetězci. Pokud jste například zadali -p 1400:1433
v příkazu docker run
, připojte se explicitně zadáním portu 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>"
Nástroje uvnitř kontejneru
Počínaje SQL Serverem 2017 (14.x) jsou do image kontejneru zahrnuty nástroje příkazového řádku SQL Serveru. Pokud se k obrazu připojíte pomocí interaktivní příkazové řádky, můžete nástroje spustit místně.
Pomocí příkazu
docker exec -it
spusťte interaktivní prostředí Bash uvnitř spuštěného kontejneru. V následujícím příkladue69e056c702d
je ID kontejneru.docker exec -it e69e056c702d "bash"
Spropitné
Nemusíte vždy zadávat celé ID kontejneru. Stačí zadat dostatek znaků, abyste ho mohli jednoznačně identifikovat. V tomto příkladu tedy může být dostačující použít
e6
neboe69
místo úplného ID. Pokud chcete zjistit ID kontejneru, spusťte příkazdocker ps -a
.Jakmile se nacházíte uvnitř kontejneru, připojte se místně pomocí sqlcmd pomocí jeho úplné cesty.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P '<YourPassword>'
Poznámka
Novější verze sqlcmd jsou ve výchozím nastavení zabezpečené. Další informace o šifrování připojení najdete v tématu nástroj sqlcmd pro Windows a Připojení pomocí sqlcmd pro Linux a macOS. Pokud připojení neproběhne úspěšně, můžete přidat možnost
-No
sqlcmd a určit, že šifrování není povinné.Po dokončení sqlcmd zadejte
exit
.Po dokončení interaktivního příkazového řádku zadejte
exit
. Kontejner se bude dál spouštět po ukončení interaktivního prostředí Bash.
Kontrola verze kontejneru
Pokud chcete znát verzi SQL Serveru ve spuštěném kontejneru, zobrazte ji spuštěním následujícího příkazu. Nahraďte <Container ID or name>
ID nebo názvem cílového kontejneru. Nahraďte <password>
heslem sql Serveru pro účet správce systému (sa
).
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P '<password>' \
-Q 'SELECT @@VERSION'
Poznámka
Novější verze sqlcmd jsou ve výchozím nastavení zabezpečené. Další informace o šifrování připojení najdete v tématu nástroj sqlcmd pro Windows a Připojení pomocí sqlcmd pro Linux a macOS. Pokud připojení neproběhne úspěšně, můžete přidat možnost -No
sqlcmd a určit, že šifrování není povinné.
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd `
-S localhost -U sa -P "<password>" `
-Q "SELECT @@VERSION"
Poznámka
Novější verze sqlcmd jsou ve výchozím nastavení zabezpečené. Další informace o šifrování připojení najdete v tématu nástroj sqlcmd pro Windows a Připojení pomocí sqlcmd pro Linux a macOS. Pokud připojení neproběhne úspěšně, můžete přidat možnost -No
sqlcmd a určit, že šifrování není povinné.
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd ^
-S localhost -U sa -P "<password>" ^
-Q "SELECT @@VERSION"
Poznámka
Novější verze sqlcmd jsou ve výchozím nastavení zabezpečené. Další informace o šifrování připojení najdete v tématu nástroj sqlcmd pro Windows a Připojení pomocí sqlcmd pro Linux a macOS. Pokud připojení neproběhne úspěšně, můžete přidat možnost -No
sqlcmd a určit, že šifrování není povinné.
Můžete také identifikovat verzi SQL Serveru a číslo buildu pro cílovou image kontejneru. Následující příkaz zobrazí verzi SQL Serveru a informace o sestavení pro image mcr.microsoft.com/mssql/server:2022-latest
. Provede to spuštěním nového kontejneru s proměnnou prostředí PAL_PROGRAM_INFO=1
. Výsledný kontejner okamžitě ukončí a příkaz docker rm
ho odebere.
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
Předchozí příkazy zobrazují informace o verzi podobné následujícímu výstupu:
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
Spuštění konkrétní image kontejneru SQL Serveru
Poznámka
- Počínaje SQL Serverem 2019 (15.x) CU3 se podporuje Ubuntu 18.04.
- Počínaje SQL Serverem 2019 (15.x) CU10 se podporuje Ubuntu 20.04.
- Seznam všech dostupných značek pro mssql/server můžete načíst na https://mcr.microsoft.com/v2/mssql/server/tags/list.
Existují scénáře, kdy možná nebudete chtít použít nejnovější image kontejneru SQL Serveru. Pokud chcete spustit konkrétní image kontejneru SQL Serveru, postupujte následovně:
Identifikujte
tag
Dockeru pro verzi, kterou chcete použít. Chcete-li zobrazit dostupné značky, podívejte se na Microsoft Artifact Registry.Stáhněte obraz kontejneru SQL Serveru se značkou. Například chcete-li stáhnout obrázek
2019-CU18-ubuntu-20.04
, nahraďte v následujícím příkazu<image_tag>
za2019-CU18-ubuntu-20.04
.docker pull mcr.microsoft.com/mssql/server:<image_tag>
Pokud chcete spustit nový kontejner s daným obrazem, zadejte název tagu v příkazu
docker run
. V následujícím příkazu nahraďte<image_tag>
verzí, kterou chcete spustit. Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . 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á.Důležitý
Proměnná prostředí
SA_PASSWORD
je zastaralá. Místo toho použijteMSSQL_SA_PASSWORD
.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>
Tyto kroky lze použít také k downgradu existujícího kontejneru. Můžete například chtít vrátit spuštěný kontejner zpět nebo downgradovat pro účely řešení potíží nebo testování. Pokud chcete downgradovat spuštěný kontejner, musíte pro složku dat používat techniku trvalosti. Postupujte podle stejných kroků uvedených v části upgrade, ale při spuštění nového kontejneru zadejte název značky starší verze.
Spouštění imagí kontejnerů založených na RHEL
Dokumentace k obrazům kontejnerů SQL Serveru běžícího pod Linuxem odkazuje na kontejnery založené na Ubuntu. Počínaje SQL Serverem 2019 (15.x) můžete používat kontejnery založené na Red Hat Enterprise Linuxu (RHEL). Příklad obrázku pro RHEL bude vypadat jako mcr.microsoft.com/mssql/rhel/server:2019-CU15-rhel-8
.
Například následující příkaz načte kumulativní aktualizaci 18 pro kontejner SQL Server 2019 (15.x), který používá 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
Spouštění obrázků produkčních kontejnerů
rychlý průvodce v předchozí části spustí bezplatnou Developer edici SQL Serveru z Microsoft Artifact Registry. Většina informací se stále vztahuje, pokud chcete spouštět produkční image kontejnerů, jako jsou edice Enterprise, Standard nebo Web. Tady je ale uvedeno několik rozdílů.
SQL Server můžete použít pouze v produkčním prostředí, pokud máte platnou licenci. Zde můžete získat bezplatnou produkční licenci SQL Server Express zde. Licence na edici SQL Server Standard a Enterprise jsou k dispozici prostřednictvím multilicenčního programu společnosti Microsoft.
Image kontejneru Developer je možné nakonfigurovat tak, aby spouštěla i produkční edice.
Pokud chcete spustit produkční edici, projděte si požadavky a postupy spuštění v příručce pro rychlý začátek . Musíte zadat vaši produkční edici pomocí proměnné prostředí MSSQL_PID
. Následující příklad ukazuje, jak spustit nejnovější image kontejneru SQL Serveru 2022 (16.x) pro edici Enterprise Core.
Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . 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á.
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"
Důležitý
Předáním hodnoty Y
proměnné prostředí ACCEPT_EULA
a hodnotě edice MSSQL_PID
vyjadřujete, že máte platnou a existující licenci pro edici a verzi SQL Serveru, kterou chcete použít. Souhlasíte také s tím, že vaše používání softwaru SQL Serveru spuštěného v imagi kontejneru se bude řídit podmínkami vaší licence SQL Serveru.
Úplný seznam možných hodnot pro MSSQL_PID
najdete v tématu Konfigurace nastavení SQL Serveru s proměnnými prostředí v Linuxu.
Spuštění několika kontejnerů SQL Serveru
Docker nabízí způsob, jak spustit více kontejnerů SQL Serveru na stejném hostitelském počítači. Tento přístup použijte ve scénářích, které vyžadují více instancí SQL Serveru na stejném hostiteli. Každý kontejner musí používat jiný port.
Následující příklad vytvoří dva kontejnery SQL Serveru 2017 (14.x) a mapuje je na porty 1401
a 1402
na hostitelském počítači.
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
Následující příklad vytvoří dva kontejnery SQL Serveru 2019 (15.x) a mapuje je na porty 1401
a 1402
na hostitelském počítači.
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
Následující příklad vytvoří dva kontejnery SQL Serveru 2022 (16.x) a mapuje je na porty 1401
a 1402
na hostitelském počítači.
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
Opatrnost
Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . 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á.
Teď existují dvě instance SQL Serveru spuštěné v samostatných kontejnerech. Klienti se můžou připojit ke každé instanci SQL Serveru pomocí IP adresy hostitele kontejneru a čísla portu kontejneru.
Poznámka
Novější verze sqlcmd (v mssql-tools18) jsou ve výchozím nastavení zabezpečené. Pokud používáte verzi 18 nebo vyšší, musíte přidat možnost No
k sqlcmd, abyste určili, že šifrování není povinné, ale volitelné.
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>"
Upgradeování SQL Serveru v kontejnerech
Pokud chcete upgradovat image kontejneru pomocí Dockeru, nejprve identifikujte značku verze pro upgrade. Stáhněte si tuto verzi z registru pomocí příkazu docker pull
:
docker pull mcr.microsoft.com/mssql/server:<image_tag>
Tím se aktualizuje image SQL Serveru pro všechny nové kontejnery, které vytvoříte, ale neaktualizuje SQL Server v žádném spuštěném kontejneru. Uděláte to tak, že vytvoříte nový kontejner s nejnovější imagí kontejneru SQL Serveru a migrujete data do tohoto nového kontejneru.
Ujistěte se, že používáte jednu z technik trvalosti dat pro existující kontejner SQL Serveru. To vám umožní spustit nový kontejner se stejnými daty.
Zastavte kontejner SQL Serveru pomocí příkazu
docker stop
.Vytvořte nový kontejner SQL Serveru s
docker run
a zadejte buď mapovaný hostitelský adresář, nebo kontejner datového svazku. Ujistěte se, že pro upgrade SQL Serveru používáte konkrétní značku. Nový kontejner teď používá novou verzi SQL Serveru se stávajícími daty SQL Serveru.Důležitý
Upgrade se v současnosti podporuje jenom mezi verzemi RC1, RC2 a GA.
Ověřte databáze a data v novém kontejneru.
Volitelně můžete starý kontejner odebrat pomocí
docker rm
.
Související obsah
- Konfigurace a přizpůsobení kontejnerů SQL Serveru s Linuxem
- Informace o prostředcích, zpětné vazbě a známých problémech najdete v úložišti githubu mssql-docker.
- řešení potíží s kontejnery Dockeru SQL Serveru
- vysokou dostupnost pro kontejnery SQL Serveru
- zabezpečení kontejnerů SQL Serveru s Linuxem
Přispějte do dokumentace k 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 najdete v tématu Jak přispívat do dokumentace k SQL Serveru