community.docker.docker_compose_v2_run 模块 – 在 Compose 服务的新容器中运行命令
注意
此模块是 community.docker 集合 (版本 4.1.0) 的一部分。
如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.docker。您需要其他要求才能使用此模块,有关详细信息,请参见 需求。
要在 playbook 中使用它,请指定:community.docker.docker_compose_v2_run。
community.docker 3.13.0 中的新增功能
概要
- 使用 Docker Compose 在服务的新的容器中运行命令。 
- 这封装了 - docker compose run。
需求
以下需求是在执行此模块的主机上所需的。
- 带有 Docker compose 插件 2.18.0 或更高版本的 Docker CLI 
- 如果使用 - definition,则需要 PyYAML
参数
| 参数 | 注释 | 
|---|---|
| 在 Docker 主机上运行的 Docker API 的版本。 默认为此集合和 docker 守护程序支持的最新 API 版本。 如果任务中未指定此值,则将改为使用环境变量  默认值:  | |
| 通过提供 CA 证书文件的路径来执行服务器验证时使用 CA 证书。 如果任务中未指定此值并且设置了环境变量  | |
| 要添加到容器的 Linux 功能。 | |
| 要从容器中删除的 Linux 功能。 | |
| 在其中运行命令的目录。 | |
| 如果设置为  如果使用包含 选项 
 | |
| 容器退出时自动删除。 对应于 选项 
 | |
| 要使用的Docker CLI上下文。 与 | |
| 客户端TLS证书文件的路径。 如果任务中未指定此值,并且设置了环境变量 | |
| 客户端TLS密钥文件的路径。 如果任务中未指定此值,并且设置了环境变量 | |
| 描述一个或多个服务、网络和卷的Compose文件。 与 如果提供,则此模块必须可以使用PyYAML,并且必须指定 请注意,使用此选项时,将创建一个临时目录,并在之后将其删除。 | |
| 是否同步运行命令( 如果设置为 选项 
 | |
| Docker CLI 的路径。如果未提供,将在 | |
| 用于连接到 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定此值,则将改用环境变量 与 | |
| 覆盖容器镜像的入口点。 | |
| 包含环境变量及其相应值的字典,这些值将传递到容器内运行的命令。 YAML 解析器可能会将某些值解析为数字、布尔值或其他类型,为了避免数据丢失,必须对这些值进行引用(例如 请注意,如果您使用Jinja2模板传递值,例如 | |
| 相对于 文件按给定的顺序加载和合并。 与 | |
| 即使未附加,是否保持STDIN打开。 选项 
 | |
| 向容器添加或覆盖标签。 | |
| 为容器分配名称。 | |
| 不启动链接的服务。 选项 
 | |
| 启动服务时要启用的配置文件列表。 相当于 | |
| 提供项目名称。如果未提供,则项目名称取自 当提供 | |
| 包含Compose文件( 如果提供了 与 | |
| 将容器的端口发布到主机。 | |
| 删除Compose文件中未定义的服务对应的容器。 选项 
 | |
| 要运行命令的服务。 | |
| 运行命令时启用所有服务的端口并映射到主机。 选项 
 | |
| 将命令的标准输入直接设置为指定值。 仅当 | |
| 从结果中的stdout/stderr末尾去除空行。 选项 
 | |
| 使用TLS保护与API的连接,但不验证Docker主机服务器的真实性。请注意,如果 如果任务中未指定此值,则将使用环境变量 选项 
 | |
| 验证Docker主机服务器的真实性时,提供服务器的预期名称。 如果任务中未指定此值,则将使用环境变量 | |
| 是否分配TTY。 选项 
 | |
| 在容器连接到的网络中使用服务的网络 选项 
 | |
| 如果指定,则使用该用户执行此命令。 | |
| 使用TLS保护与API的连接并验证Docker主机服务器的真实性。 如果任务中未指定此值,则将使用环境变量 选项 
 | |
| 绑定挂载一个或多个卷。 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 操作组: community.docker.docker, docker | 在 | |
| 支持:不支持 | 可以在 | |
| 支持:不支持 | 在差异模式下,将返回有关已更改内容(或可能需要在 | 
备注
注意
- 如果需要在 - command或- argv中评估容器的环境变量,则需要通过shell传递命令,例如- command=/bin/sh -c "echo $ENV_VARIABLE"。
- Docker compose CLI插件没有稳定的输出格式(例如,参见https://github.com/docker/compose/issues/10872),并且对于主要操作也没有机器友好的输出格式。该模块尝试通过各种依赖于版本的行为调整以及测试旧版和新版Docker compose CLI插件来适应这一点。目前,该模块已通过2.18.1到2.23.3之间的多个插件版本测试。插件版本的精确列表会随着时间的推移而变化。Docker compose CLI插件的新版本随时可能破坏此模块。 
- 通过为每个任务提供参数或定义环境变量来连接到Docker守护程序。您可以定义 - DOCKER_HOST、- DOCKER_TLS_HOSTNAME、- DOCKER_API_VERSION、- DOCKER_CERT_PATH、- DOCKER_TLS、- DOCKER_TLS_VERIFY和- DOCKER_TIMEOUT。如果您使用的是docker machine,请运行产品附带的设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参见https://docs.dockerd.com.cn/machine/reference/env/。
- 此模块**不**使用Docker SDK for Python与Docker守护程序通信。它直接调用Docker CLI程序。 
另请参见
另请参见
- community.docker.docker_compose_v2
- 使用Docker Compose CLI插件管理多容器Docker应用程序。 
示例
- name: Run a simple command (command)
  community.docker.docker_compose_v2_run:
    service: foo
    command: /bin/bash -c "ls -lah"
    chdir: /root
  register: result
- name: Print stdout
  ansible.builtin.debug:
    var: result.stdout
- name: Run a simple command (argv)
  community.docker.docker_compose_v2_run:
    service: foo
    argv:
      - /bin/bash
      - "-c"
      - "ls -lah > /dev/stderr"
    chdir: /root
  register: result
- name: Print stderr lines
  ansible.builtin.debug:
    var: result.stderr_lines
返回值
常见返回值已在此处记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 已创建容器的ID。 返回:成功且 | |
| 容器命令的标准错误输出。 返回:成功且 | |
| 容器命令的标准输出。 返回:成功且 | 
