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šemPATH
počí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 pip
specifickou 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:
- JDK 8u191 jako Java v systému
PATH
- bash
- iproute2 (ubuntu iproute)
- coreutils (ubuntu coreutils)
- procps (ubuntu procps)
- sudo (ubuntu sudo)
- Ubuntu Linux
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ů:
- Docker Hub bez ověřování nebo základního ověřování.
- Azure Container Registry se základním ověřováním
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í
Na stránce Vytvořit výpočetní prostředky zadejte verzi modulu Runtime Databricks, která podporuje službu Databricks Container Services.
V části Upřesnit možnosti vyberte kartu Dockeru .
Vyberte Použít vlastní kontejner Dockeru.
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>
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
Vygenerujte token rozhraní API.
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í.
- U veřejných imagí Dockeru
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:
- Virtuální počítače jsou získány od poskytovatele cloudu.
- Vlastní image Dockeru se stáhne z vašeho úložiště.
- Azure Databricks vytvoří z image kontejner Dockeru.
- Kód databricks Runtime se zkopíruje do kontejneru Dockeru.
- 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
true
hodnotu , jako v následujícím příkladu:
databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'