airflow.providers.docker.operators.docker_swarm¶
執行臨時的 Docker Swarm 服務。
類¶
將命令作為臨時的 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, service_prefix='airflow', logging_driver=None, logging_driver_opts=None, **kwargs)[source]¶
基類:
airflow.providers.docker.operators.docker.DockerOperator將命令作為臨時的 docker swarm 服務執行。
示例用例 - 使用 Docker Swarm 編排使一次性指令碼具有高可用性。
在主機上建立一個臨時目錄並將其掛載到容器中,以便儲存總大小超過容器預設磁碟大小 10GB 的檔案。可以透過環境變數
AIRFLOW_TMP_DIR訪問掛載目錄的路徑。如果在拉取映象之前需要登入私有登錄檔,則需要在 Airflow 中配置 Docker 連線,並透過引數
docker_conn_id提供連線 ID。- 引數:
image (str) – 用於建立容器的 Docker 映象。如果省略映象標籤,將使用“latest”。
api_version – 遠端 API 版本。設定為
auto以自動檢測伺服器版本。auto_remove –
服務終止時是否允許移除服務。可能的值
never: (預設) 不移除服務success: 成功時移除force: 始終移除服務
command – 在容器中執行的命令。(模版化)
docker_url – 執行 docker daemon 的主機的 URL。預設值為
DOCKER_HOST環境變數的值,如果未設定則為 unix://var/run/docker.sock。environment – 在容器中設定的環境變數。(模版化)
force_pull – 每次執行時都拉取 docker 映象。預設為 False。
mem_limit – 容器可以使用的最大記憶體量。可以是浮點值(表示位元組限制),或像
128m或1g這樣的字串。tls_ca_cert – PEM 編碼的證書頒發機構檔案路徑,用於保護 docker 連線。
tls_client_cert – PEM 編碼的證書檔案路徑,用於驗證 docker 客戶端身份。
tls_client_key – PEM 編碼的金鑰檔案路徑,用於驗證 docker 客戶端身份。
tls_hostname – 用於匹配 docker 伺服器證書的主機名,或設定為 False 以停用檢查。
tls_ssl_version – 與 docker daemon 通訊時使用的 SSL 版本。
tmp_dir – 容器內用於掛載運算子在主機上建立的臨時目錄的掛載點。該路徑也透過環境變數
AIRFLOW_TMP_DIR在容器內部可用。user – docker 容器內的預設使用者。
docker_conn_id – Docker 連線 ID
tty – 為此服務的容器分配偽 TTY。需要設定此項才能檢視 Docker 容器/服務的日誌。
enable_logging (bool) – 在運算子日誌中顯示應用程式日誌。僅當 Docker 引擎使用 json-file 或 journald 日誌驅動時支援。使用 Python 應用程式時,應設定 tty 引數。
retrieve_output – 此 docker 映象是否應在手動關閉映象之前持續嘗試從輸出檔案拉取並輸出內容。對於使用者希望獲取未釋出到日誌中的 pickle 序列化輸出的情況很有用。
retrieve_output_path – 將被檢索並傳遞給 xcom 的輸出檔案路徑
configs (list[docker.types.ConfigReference] | None) – 將暴露給 swarm 服務容器的 docker 配置列表。這些配置是 docker api 中定義的 ConfigReference 物件 [https://docker-py.readthedocs.io/en/stable/services.html#docker.models.services.ServiceCollection.create]_
secrets (list[docker.types.SecretReference] | None) – 將暴露給 swarm 服務容器的 docker secrets 列表。這些 secrets 是 docker create_service api 中定義的 SecretReference 物件。[https://docker-py.readthedocs.io/en/stable/services.html#docker.models.services.ServiceCollection.create]_
mode (docker.types.ServiceMode | None) – 指示服務應部署為副本服務 (replicated) 還是全域性服務 (global),以及相關引數
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) – 啟動的容器的資源。這些資源是 docker api 中定義的 Resources 物件 [https://docker-py.readthedocs.io/en/stable/api.html#docker.types.Resources]_ 此引數優先於 mem_limit 引數。
service_prefix (str) – 服務名稱的字首。服務名稱將生成為
{service_prefix}-{random_string}。預設為 ‘airflow’。logging_driver (Literal['json-path', 'gelf'] | None) – 用於容器日誌的日誌驅動。Docker 預設使用 ‘json-file’。有關 Docker 日誌驅動的更多資訊:https://dockerdocs.tw/engine/logging/configure/ 注意:目前僅支援 ‘json-file’ 和 ‘gelf’ 驅動。如果留空,將使用 ‘json-file’。
logging_driver_opts (dict | None) – 與所選日誌驅動一起使用的日誌選項字典。根據日誌驅動的不同,有些選項是必需的。如果未包含這些選項,運算子將失敗。所有選項值必須是字串並用雙引號括起來。有關 ‘json-file’ 選項的資訊:https://dockerdocs.tw/engine/logging/drivers/json-file/ 有關 ‘gelf’ 選項的資訊:https://dockerdocs.tw/engine/logging/drivers/gelf/ 注意:‘gelf’ 驅動需要設定 ‘gelf-address’ 選項。