自定義容器磚容器服務

磚容器服務允許您指定一個碼頭工人形象當您創建一個集群。一些示例用例包括:

  • 庫定製:你有完全控製你想要安裝的係統庫。

  • 黃金容器環境:你的碼頭工人形象是一個鎖定環境,永遠不會改變。

  • 碼頭工人CI / CD集成:你可以用你的碼頭工人集成數據磚CI / CD管道。

您還可以使用碼頭工人圖像來創建自定義集群GPU設備上深刻的學習環境。額外的信息使用GPU集群數據磚容器服務,明白了在GPU集群磚容器服務

任務執行容器開始,每次使用一個init腳本

需求

請注意

為機器學習不支持數據磚磚運行時容器服務。

  • 磚工作區必須磚容器服務啟用

  • 您的機器必須運行一個最近的碼頭工人守護進程(測試和使用客戶機/服務器版本18.03.0-ce)和碼頭工人命令必須在你可用路徑

步驟1:建立你的基地

磚建議你建立你的碼頭工人的基礎從基礎數據磚建造和測試。也可以從頭開始構建自己的碼頭工人基地。本節描述了兩個選擇。

選項1。使用磚建造的基地

下麵的例子使用了9.倍標記為一個圖像目標集群運行時磚的運行時版本9.0及以上:

從databricksruntime /標準:9。x……

指定額外的Python庫,如熊貓和urllib的最新版本,使用特定容器的版本皮普。為datatabricksruntime /標準:9. x容器,包括以下:

運行/磚/ python3 / bin / pip安裝熊貓運行/磚/ python3 / bin / pip安裝urllib3

datatabricksruntime /標準:8. x容器或低,包括以下:

運行/磚/ conda / env / dcs-minimal / bin / pip安裝熊貓運行/磚/ conda / env / dcs-minimal / bin / pip安裝urllib3

基本圖像是托管在碼頭工人在中心https://hub.docker.com/u/databricksruntime。這些基地在Dockerfiles用於生成https://github.com/databricks/containers

請注意

碼頭工人中心托管圖像與標簽“lts”後綴將修補。所有其他圖像例子和不定期修補。

請注意

基本的圖像databricksruntime /標準databricksruntime /最小不應混淆無關databricks-standarddatabricks-minimal環境中不再可用磚與Conda運行時(β)。

第二個選項。構建自己的碼頭工人的基礎

你也可以從頭開始構建自己的碼頭工人基地。碼頭工人形象必須滿足這些要求:

從頭開始構建自己的形象,您必須創建虛擬環境。您還必須包括包磚內置集群,如Python和r .開始,您可以使用適當的基本形象:

  • R:databricksruntime / rbase

  • Python:databricksruntime / python

  • 最小的圖像由磚:databricksruntime /最小

你也可以參考的例子在GitHub Dockerfiles

請注意

使用Ubuntu Linux磚建議;然而,Linux可以使用高山。要使用高山Linux,您必須包括這些文件:

此外,您必須設置Python,如圖所示例子Dockerfile

警告

測試您的自定義容器形象徹底磚集群上。你的容器可能工作在本地或構建機器上,但是當你的容器啟動磚集群,集群發射可能失敗,某些功能可能會變得殘疾,甚至你的容器可能停止工作,默默地。在最壞的情況,它可能破壞你的數據或不小心向外界公開數據。

作為一個提醒,你使用磚容器服務的服務具體條款

步驟2:把你的基地的形象

推動定製基礎鏡像碼頭工人注冊中心。這個過程支持以下注冊表:

其他碼頭工人注冊中心不支持身份驗證或基本認證也將工作。

請注意

如果你使用碼頭工人為你的碼頭工人注冊中心,一定要檢查這個速度限製適應集群的數量,你希望在六小時內發射。這些速率限製是不同的對於匿名用戶,通過身份驗證的用戶沒有支付訂閱,和付費訂閱。看到碼頭工人的文檔獲取詳細信息。如果超出這個極限,你會得到一個“429”太多的請求響應。

第三步:啟動集群

您可以使用UI或啟動集群API。

啟動集群使用UI

  1. 創建集群頁麵指定一個磚運行時版本,支持數據磚容器服務。

  2. 高級選項,選擇碼頭工人選項卡。

  3. 選擇使用自己的碼頭工人容器

  4. 碼頭工人圖像URL字段中,輸入您的自定義碼頭工人的形象。

    碼頭工人圖像URL示例:

    注冊表

    標簽格式

    碼頭工人中心

    <組織> / <庫>:<標記>(例如:databricksruntime /標準:最新)

    亞馬遜ECR

    < aws-account-id > .dkr.ecr。<地區>.amazonaws.com/ <庫>:<標記>

    Azure容器注冊表

    < your-registry-name > .azurecr.io / <存儲庫名>:<標記>

  5. 選擇身份驗證類型。

啟動集群使用API

  1. 生成一個API令牌

  2. 使用集群API啟動與定製碼頭工人的集群基地。

    curl - x - h後“授權:無記名<標記>”https:// < databricks-instance > / api / 2.0 /集群創建- d”{“cluster_name”:“<集群名稱>”,“num_workers”: 0,:“node_type_id i3.xlarge”," docker_image ": {“url”:“最新databricksruntime /標準:”," basic_auth ": {“用戶名”:“< docker-registry-username >”,“密碼”:“< docker-registry-password >”}},:“spark_version 7.3.x-scala2.12”," aws_attributes ": {“可用性”:“ON_DEMAND”,:“instance_profile_arn攻擊:aws:我::< aws-account-number >: instance-profile / < iam-role-name >”}}'

    basic_auth需求取決於你的碼頭工人形象類型:

    • 對於公共碼頭工人的圖像,包括basic_auth字段。

    • 私人碼頭工人的圖像,你必須包括basic_auth字段中,使用一個服務主體ID和密碼作為用戶名和密碼。

    • Azure容器注冊,你必須設置basic_auth場服務主體的ID和密碼。看到Azure容器注冊中心服務主體身份驗證文檔創建信息服務主體。

    • 對於亞馬遜ECR的圖像,不包括basic_auth字段。你必須用一個啟動集群實例配置文件包括權限將碼頭工人圖像從圖像所在的碼頭工人存儲庫。要做到這一點,跟進步驟3和步驟4的過程設置安全訪問S3 bucket使用實例配置文件

      這是我的一個例子的角色,允許將任何圖像。指定存儲庫< arn-of-repository >

      {“版本”:“2012-10-17”,“聲明”:({“效應”:“允許”,“行動”:(“ecr: GetAuthorizationToken”),“資源”:“*”},{“效應”:“允許”,“行動”:(“ecr: BatchCheckLayerAvailability”,“ecr: GetDownloadUrlForLayer”,“ecr: GetrepositoryPolicy”,“ecr: DescribeRepositories”,“ecr: ListImages”,“ecr: DescribeImages”,“ecr: BatchGetImage”),“資源”:(“< arn-of-repository >”]}]}

      如果亞馬遜ECR形象駐留在不同的比磚集群的AWS帳戶,使用一個ECR庫政策除了授予磚集群的集群實例配置文件的訪問。這裏的一個例子是一個ECR庫政策。我認為集群的角色實例配置文件指定< arn-of-IAM-role >

      {“版本”:“2012-10-17”,“聲明”:[{“席德”:“AllowCrossAccountPush”,“效應”:“允許”,“校長”:{“AWS”:“< arn-of-IAM-role >”},“行動”:(“ecr: BatchCheckLayerAvailability”,“ecr: BatchGetImage”,“ecr: DescribeImages”,“ecr: DescribeRepositories”,“ecr: GetDownloadUrlForLayer”,“ecr: GetrepositoryPolicy”,“ecr: ListImages”]})}

使用init腳本

磚容器服務集群使客戶包括碼頭工人容器中的init腳本。beplay体育app下载地址在大多數情況下,你應該避免init腳本和定製(使用Dockerfile)直接通過碼頭工人。然而,必須在容器啟動時執行某些任務,而不是當容器建立。為這些任務使用一個init腳本。

例如,假設您想要運行一個安全守護進程在一個自定義的容器。安裝和建造碼頭工人的守護進程圖像通過圖像構建管道。然後,添加一個init腳本啟動守護進程。在這個例子中,init腳本將包括一行systemctl開始my-daemon

在API,您可以指定init腳本作為集群的一部分規範如下。有關更多信息,請參見集群API

“init_scripts”:({“文件”:{“目的地”:“文件:/我的/地方/ file.sh”}}]

磚容器服務的圖像,還可以將init腳本存儲在DBFS和雲存儲。

以下步驟發生當你啟動一個磚容器服務集群:

  1. vm從雲提供商獲得。

  2. 自定義下載從你的回購碼頭工人形象。

  3. 磚創建了一個集裝箱碼頭工人的形象。

  4. 磚運行時代碼複製到碼頭工人的容器。

  5. 執行init的代幣。看到Init腳本執行順序

磚忽略了碼頭工人CMD入口點原語。