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, logging_driver=None, logging_driver_opts=None, **kwargs)[源代码]¶
基类:
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 – 当容器的进程退出时,在守护进程端自动删除容器。默认为 False。
command – 在容器中运行的命令。(模板化)
docker_url – 运行 docker 守护进程的主机的 URL。默认值是
DOCKER_HOST
环境变量的值,如果未设置则为 unix://var/run/docker.sock。environment – 在容器中设置的环境变量。(模板化)
force_pull – 每次运行时都拉取 docker 镜像。默认为 False。
mem_limit – 容器可以使用的最大内存量。可以是浮点值(表示以字节为单位的限制),也可以是类似于
128m
或1g
的字符串。tls_ca_cert – 用于保护 docker 连接的 PEM 编码的证书颁发机构的路径。
tls_client_cert – 用于验证 docker 客户端的 PEM 编码的证书的路径。
tls_client_key – 用于验证 docker 客户端的 PEM 编码的密钥的路径。
tls_hostname – 与 docker 服务器证书匹配的主机名,或 False 以禁用检查。
tls_ssl_version – 与 docker 守护进程通信时使用的 SSL 版本。
tmp_dir – 容器内挂载到运算符在主机上创建的临时目录的挂载点。该路径也可通过容器内的环境变量
AIRFLOW_TMP_DIR
获取。user – docker 容器内的默认用户。
docker_conn_id – Docker 连接 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 配置列表。这些配置是根据 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 密钥列表。这些密钥是根据 docker create_service api 的 SecretReference 对象。 [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) – 启动的容器的资源。这些资源是根据 docker api 的 Resources [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://docs.docker.net.cn/engine/logging/configure/ 注意:目前仅支持驱动程序“json-file”和“gelf”。如果留空,将使用“json-file”。
logging_driver_opts (dict | None) – 用于所选关联日志驱动程序的日志选项字典。根据日志驱动程序的不同,某些选项是必需的。如果未能包含这些选项,操作符将会失败。所有选项值都必须是字符串,并用双引号括起来。有关 ‘json-file’ 选项的信息:https://docs.docker.net.cn/engine/logging/drivers/json-file/ 有关 ‘gelf’ 选项的信息:https://docs.docker.net.cn/engine/logging/drivers/gelf/ 注意:‘gelf’ 驱动程序需要设置 ‘gelf-address’ 选项。