Sdílet prostřednictvím


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:

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ě.

  1. Pomocí příkazu docker exec -it spusťte interaktivní prostředí Bash uvnitř spuštěného kontejneru. V následujícím příkladu e69e056c702d 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 nebo e69 místo úplného ID. Pokud chcete zjistit ID kontejneru, spusťte příkaz docker ps -a.

  2. 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é.

  3. Po dokončení sqlcmd zadejte exit.

  4. 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ě:

  1. Identifikujte tag Dockeru pro verzi, kterou chcete použít. Chcete-li zobrazit dostupné značky, podívejte se na Microsoft Artifact Registry.

  2. 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> za 2019-CU18-ubuntu-20.04.

    docker pull mcr.microsoft.com/mssql/server:<image_tag>
    
  3. 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žijte MSSQL_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_PIDvyjadř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_PIDnajdete 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.

  1. 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.

  2. Zastavte kontejner SQL Serveru pomocí příkazu docker stop.

  3. 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.

  4. Ověřte databáze a data v novém kontejneru.

  5. Volitelně můžete starý kontejner odebrat pomocí docker rm.

  • Začněte s imagemi kontejnerů SQL Serveru 2017 (14.x) v Dockeru tím, že si projdete rychlý úvod
  • Začněte s obrazy kontejneru SQL Serveru 2019 (15.x) v Dockeru a projděte si rychlý průvodce
  • Začněte s dockerovými image SQL Serveru 2022 (16.x) v Dockeru pomocí průvodce rychlým spuštěním .

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