airflow.providers.docker.operators.docker_swarm

執行臨時 Docker Swarm 服務。

模組內容

類別

DockerSwarmOperator

以臨時 docker swarm 服務執行命令。

class airflow.providers.docker.operators.docker_swarm.DockerSwarmOperator(*, image, args=None, enable_logging=True, configs=None, secrets=None, mode=None, networks=None, placement=None, container_resources=None, logging_driver=None, logging_driver_opts=None, **kwargs)[原始碼]

基底類別: airflow.providers.docker.operators.docker.DockerOperator

以臨時 docker swarm 服務執行命令。

範例使用案例 - 使用 Docker Swarm 協作來使一次性腳本高度可用。

在主機上建立一個臨時目錄,並掛載到容器中,以允許儲存總共超過容器中預設 10GB 磁碟大小的檔案。掛載目錄的路徑可以透過環境變數 AIRFLOW_TMP_DIR 存取。

如果需要在拉取映像檔之前登入私有 Registry,則需要在 Airflow 中配置 Docker 連線,並使用參數 docker_conn_id 提供連線 ID。

參數
  • image (str) – 要從中建立容器的 Docker 映像檔。如果省略映像檔標籤,將使用 “latest”。

  • api_version – 遠端 API 版本。設定為 auto 以自動偵測伺服器版本。

  • auto_remove – 在容器程序結束時,在守護程序端自動移除容器。預設值為 False。

  • command – 要在容器中執行的命令。(已套用 Jinja 樣板)

  • args (str | list[str] | None) – 命令的參數。

  • docker_url – 執行 docker 守護程序的主機 URL。預設值為 DOCKER_HOST 環境變數的值,如果未設定,則為 unix://var/run/docker.sock。

  • environment – 要在容器中設定的環境變數。(已套用 Jinja 樣板)

  • force_pull – 每次執行都拉取 docker 映像檔。預設值為 False。

  • mem_limit – 容器可以使用的最大記憶體量。可以是浮點數值(表示以位元組為單位的限制),也可以是字串,例如 128m1g

  • tls_ca_cert – PEM 編碼的憑證授權單位路徑,用於保護 docker 連線。

  • tls_client_cert – PEM 編碼的憑證路徑,用於驗證 docker 用戶端。

  • tls_client_key – PEM 編碼的金鑰路徑,用於驗證 docker 用戶端。

  • tls_hostname – 要與 docker 伺服器憑證比對的主機名稱,或 False 以停用檢查。

  • tls_ssl_version – 與 docker 守護程序通訊時要使用的 SSL 版本。

  • tmp_dir – 容器內部的掛載點,指向運算子在主機上建立的臨時目錄。路徑也可以透過容器內的環境變數 AIRFLOW_TMP_DIR 取得。

  • user – Docker 容器內的預設使用者。

  • docker_conn_idDocker 連線 ID

  • tty – 為此服務的容器分配偽 TTY。需要設定此項才能查看 Docker 容器/服務的日誌。

  • enable_logging (bool) – 在運算子的日誌中顯示應用程式的日誌。僅當 Docker 引擎使用 json-file 或 journald 日誌驅動程式時才支援。應設定 tty 參數以與 Python 應用程式一起使用。

  • retrieve_output – 此 docker 映像檔是否應持續嘗試從輸出檔案中拉取並在手動關閉映像檔之前輸出。適用於使用者想要未發佈到日誌的 pickle 序列化輸出的情況

  • retrieve_output_path – 將擷取並傳遞到 xcom 的輸出檔案路徑

  • configs (list[docker.types.ConfigReference] | None) – 要公開給 swarm 服務容器的 docker 組態清單。組態是 ConfigReference 物件,如 docker api [https://docker-py.readthedocs.io/en/stable/services.html#docker.models.services.ServiceCollection.create]_

  • secrets (list[docker.types.SecretReference] | None) – 要公開給 swarm 服務容器的 docker 密碼清單。密碼是 SecretReference 物件,如 docker create_service api。[https://docker-py.readthedocs.io/en/stable/services.html#docker.models.services.ServiceCollection.create]_

  • mode (docker.types.ServiceMode | None) – 指示服務應部署為複寫或全域服務,以及相關聯的參數

  • networks (list[str | docker.types.NetworkAttachmentConfig] | None) – 要將服務附加到的網路名稱或 ID 或 NetworkAttachmentConfig 清單。

  • placement (docker.types.Placement | list[docker.types.Placement] | None) – 排程器的放置指示。如果傳遞清單,則假定為作為 Placement 物件一部分的約束清單。

  • container_resources (docker.types.Resources | None) – 啟動容器的資源。資源是 Resources,如 docker api [https://docker-py.readthedocs.io/en/stable/api.html#docker.types.Resources]_ 此參數優先於 mem_limit 參數。

  • logging_driver (Literal[json-path, gelf] | None) – 用於容器日誌的日誌驅動程式。Docker 預設使用 ‘json-file’。有關 Docker 日誌驅動程式的更多資訊:https://docker-docs.dev.org.tw/engine/logging/configure/ 注意:目前僅支援 ‘json-file’ 和 ‘gelf’ 驅動程式。如果留空,將使用 ‘json-file’。

  • logging_driver_opts (dict | None) – 要與所選日誌驅動程式一起使用的日誌選項字典。根據日誌驅動程式,某些選項是必需的。未能包含它們將導致運算子失敗。所有選項值都必須是字串,並用雙引號括起來。有關 ‘json-file’ 選項的資訊:https://docker-docs.dev.org.tw/engine/logging/drivers/json-file/ 有關 ‘gelf’ 選項的資訊:https://docker-docs.dev.org.tw/engine/logging/drivers/gelf/ 注意:‘gelf’ 驅動程式需要設定 ‘gelf-address’ 選項。

execute(context)[原始碼]

在建立運算子時衍生。

Context 是與呈現 Jinja 樣板時使用的相同字典。

請參閱 get_template_context 以取得更多上下文。

static format_args(args)[原始碼]

擷取參數。

參數字串會剖析為清單。

參數

args (list[str] | str | None) – docker 服務的參數

傳回

參數作為清單

傳回類型

list[str] | None

on_kill()[原始碼]

覆寫此方法以在任務執行個體被終止時清除子程序。

在運算子中使用 threading、subprocess 或 multiprocessing 模組的任何情況都需要清除,否則會留下幽靈程序。

此條目是否有幫助?