Sdílet prostřednictvím


Přizpůsobení kontejnerů pomocí služby Databricks Container Service

Služba Databricks Container Services umožňuje při vytváření výpočetních prostředků zadat image Dockeru. Mezi příklady případů použití patří:

  • Přizpůsobení knihovny: Máte plnou kontrolu nad systémovou knihovnou, kterou chcete nainstalovat.
  • Zlaté prostředí kontejneru: Vaše image Dockeru je uzamčené prostředí, které se nikdy nezmění.
  • Integrace CI/CD Dockeru: Azure Databricks můžete integrovat s kanály CI/CD Dockeru.

Image Dockeru můžete také použít k vytvoření vlastních prostředí hlubokého učení na výpočetních prostředcích pomocí zařízení s GPU. Další informace o používání výpočetních prostředků GPU se službou Databricks Container Services najdete v tématu Databricks Container Services na výpočetních prostředcích GPU.

Pro úlohy, které se mají spouštět při každém spuštění kontejneru, použijte inicializační skript.

Požadavky

  • Váš pracovní prostor Azure Databricks musí mít povolenou službu Databricks Container Services.
  • Na vašem počítači musí běžet nedávný démon Dockeru (ten, který je otestovaný a funguje s klientem nebo serverem verze 18.03.0-ce) a docker příkaz musí být dostupný na vašem PATHpočítači .

Omezení

  • Služba Databricks Container Services není podporována u výpočetních prostředků pomocí režimu sdíleného přístupu.
  • Databricks Runtime pro Machine Learning nepodporuje službu Databricks Container Services.
  • Pokud chcete získat přístup ke svazkům ve službě Databricks Container Services, přidejte do konfiguračního pole Sparku výpočetních prostředků následující konfiguraci: spark.databricks.unityCatalog.volumes.enabled true.

Krok 1: Sestavení základu

Databricks doporučuje, abyste vytvořili a otestovali základ Dockeru ze základu, který Databricks vytvořil a otestoval. Je také možné vytvořit základ Dockeru úplně od začátku. Tato část popisuje dvě možnosti.

Možnost 1. Použití základu vytvořeného Databricks

Tento příklad používá 9.x značku pro image, která bude cílit na výpočetní prostředky s verzí Modulu runtime Databricks Runtime 9.1 LTS a vyšší:

FROM databricksruntime/standard:9.x
...

Pokud chcete zadat další knihovny Pythonu, například nejnovější verzi knihovny pandas a urllib, použijte verzi pipspecifickou pro kontejner . databricksruntime/standard:9.x Pro kontejner uveďte následující:

RUN /databricks/python3/bin/pip install pandas
RUN /databricks/python3/bin/pip install urllib3

U kontejneru nebo nižšího kontejneru databricksruntime/standard:8.x uveďte následující:

RUN /databricks/conda/envs/dcs-minimal/bin/pip install pandas
RUN /databricks/conda/envs/dcs-minimal/bin/pip install urllib3

Základní image jsou hostované v Docker Hubu na adrese https://hub.docker.com/u/databricksruntime. Soubory Dockerfile použité k vygenerování těchto bází jsou na https://github.com/databricks/containersadrese .

Poznámka:

Opraví se image hostované ve službě Docker Hub se značkami s příponou -LTS. Všechny ostatní image jsou příklady a nejsou pravidelně opravovány.

Poznámka:

Základní image databricksruntime/standard a databricksruntime/minimal nezaměňují se s nesouvisejícími databricks-standard prostředími zahrnutými databricks-minimal v modulu Databricks Runtime s Conda (beta verze).

Možnost 2. Vytvoření vlastní základny Dockeru

Základ Dockeru můžete vytvořit také úplně od začátku. Image Dockeru musí splňovat tyto požadavky:

Pokud chcete vytvořit vlastní image úplně od začátku, musíte vytvořit virtuální prostředí. Musíte také zahrnout balíčky, které jsou integrované do výpočetních prostředků Databricks, jako je Python a R. Abyste mohli začít, můžete použít příslušnou základní image:

  • Pro R: databricksruntime/rbase
  • Pro Python: databricksruntime/python
  • Minimální image sestavená službou Databricks: databricksruntime/minimal

Můžete se také podívat na ukázkové soubory Dockerfile v GitHubu.

Poznámka:

Databricks doporučuje používat Ubuntu Linux; Je však možné použít Alpine Linux. Pokud chcete používat Alpine Linux, musíte zahrnout tyto soubory:

Kromě toho musíte nastavit Python, jak je znázorněno v tomto příkladu souboru Dockerfile.

Upozorňující

Důkladně otestujte vlastní image kontejneru na výpočetních prostředcích Azure Databricks. Kontejner může fungovat na místním nebo buildovém počítači, ale když se kontejner spustí v Azure Databricks, spuštění výpočetních prostředků může selhat, můžou se některé funkce zakázat nebo váš kontejner může přestat fungovat i bezobslužně. V nejhorších situacích by mohlo dojít k poškození dat nebo náhodnému zveřejnění dat externím stranám.

Krok 2: Nasdílení základní image

Nasdílejte vlastní základní image do registru Dockeru. Tento proces se podporuje u následujících registrů:

Očekává se také, že ostatní registry Dockeru, které nepodporují žádné ověřování nebo základní ověřování, budou fungovat.

Poznámka:

Pokud pro registr Dockeru používáte Docker Hub, nezapomeňte zkontrolovat, jestli limity rychlosti počítají s objemem výpočetních prostředků, které očekáváte spustit v šestihodinovém období. Tyto limity sazeb se liší u anonymních uživatelů, ověřených uživatelů bez placeného předplatného a placených předplatných. Podrobnosti najdete v dokumentaci k Dockeru. Pokud tento limit překročíte, zobrazí se odpověď 429 Příliš mnoho požadavků.

Krok 3: Spuštění výpočetních prostředků

Výpočetní prostředky můžete spustit pomocí uživatelského rozhraní nebo rozhraní API.

Spuštění výpočetních prostředků pomocí uživatelského rozhraní

  1. Na stránce Vytvořit výpočetní prostředky zadejte verzi modulu Runtime Databricks, která podporuje službu Databricks Container Services.

  2. V části Upřesnit možnosti vyberte kartu Dockeru .

  3. Vyberte Použít vlastní kontejner Dockeru.

  4. Do pole Adresa URL image Dockeru zadejte vlastní image Dockeru.

    Příklady adres URL image Dockeru:

    Registr Formát značky
    Docker Hub <organization>/<repository>:<tag> (například: databricksruntime/standard:latest)
    Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. Vyberte typ ověřování. Tajné kódy můžete použít k ukládání hodnot ověřování pomocí uživatelského jména a hesla. Viz Použití tajných kódů pro ověřování.

Spuštění výpočetních prostředků pomocí rozhraní API

  1. Vygenerujte token rozhraní API.

  2. Pomocí rozhraní příkazového řádku Databricks spusťte výpočetní prostředky s vlastní základnou Dockeru.

    databricks clusters create \
    --cluster-name <cluster-name> \
    --node-type-id Standard_DS3_v2 \
    --json '{
      "num_workers": 0,
      "docker_image": {
        "url": "databricksruntime/standard:latest",
        "basic_auth": {
          "username": "<docker-registry-username>",
          "password": "<docker-registry-password>"
        }
      },
      "spark_version": "14.3.x-scala2.12"
    }'
    

    basic_auth požadavky závisí na typu image Dockeru:

    • U veřejných imagí Dockeru basic_auth nezahrnujte pole.
    • U privátních imagí Dockeru basic_auth musíte toto pole zahrnout pomocí ID instančního objektu a hesla jako uživatelského jména a hesla.
    • Pro Azure Container Registry musíte nastavit basic_auth pole na ID a heslo instančního objektu. Informace o vytvoření instančního objektu najdete v dokumentaci k ověřování instančního objektu služby Azure Container Registry.
    • Tajný kód můžete použít také k ukládání ověřovacích informací. Viz Použití tajných kódů pro ověřování.

Použití inicializačního skriptu

Služba Databricks Container Services umožňuje zákazníkům zahrnout inicializační skripty do kontejneru Dockeru. Ve většině případů byste se měli vyhnout inicializačním skriptům a místo toho provést vlastní nastavení prostřednictvím Dockeru přímo (pomocí souboru Dockerfile). Některé úlohy se ale musí spouštět při spuštění kontejneru, nikoli při sestavení kontejneru. Pro tyto úlohy použijte inicializační skript.

Předpokládejme například, že chcete spustit démon zabezpečení uvnitř vlastního kontejneru. Nainstalujte a sestavte démona v imagi Dockeru prostřednictvím kanálu sestavení image. Pak přidejte inicializační skript, který spustí proces démon. V tomto příkladu by inicializační skript obsahoval řádek jako systemctl start my-daemon.

V rozhraní API můžete zadat inicializační skripty jako součást specifikace výpočetních prostředků následujícím způsobem. Další informace najdete v rozhraní API clusterů.

"init_scripts": [
    {
        "file": {
            "destination": "file:/my/local/file.sh"
        }
    }
]

Pro image služby Databricks Container Services můžete také ukládat inicializační skripty v cloudovém úložišti.

Při spuštění výpočetních prostředků, které používají službu Databricks Container Services, se provádí následující kroky:

  1. Virtuální počítače jsou získány od poskytovatele cloudu.
  2. Vlastní image Dockeru se stáhne z vašeho úložiště.
  3. Azure Databricks vytvoří z image kontejner Dockeru.
  4. Kód databricks Runtime se zkopíruje do kontejneru Dockeru.
  5. Inicializační skripty se spustí. Podívejte se, co jsou inicializační skripty?

Azure Databricks ignoruje Docker CMD a ENTRYPOINT primitivy.

Použití tajných kódů pro ověřování

Služba Databricks Container Service podporuje ověřování pomocí tajných kódů. Při vytváření výpočetního prostředku místo zadávání uživatelského jména nebo hesla ve formátu prostého textu zadejte tajný kód {{secrets/<scope-name>/<dcs-secret>}} . Informace o vytváření tajných kódů najdete v tématu Tajné kódy.

Povolení služby Container Services

Pokud chcete ve výpočetních prostředcích používat vlastní kontejnery, musí správce pracovního prostoru povolit službu Databricks Container Services.

Správci pracovního prostoru můžou službu Databricks Container Service povolit pomocí rozhraní příkazového řádku Databricks. V textu požadavku JSON zadejte enableDcs truehodnotu , jako v následujícím příkladu:

databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'