community.docker.docker_container_exec 模块 – 在 Docker 容器中执行命令
注意
此模块是 community.docker 集合 (版本 4.1.0) 的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.docker
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定: community.docker.docker_container_exec
。
community.docker 1.5.0 中的新增功能
概要
在 Docker 容器中执行命令。
要求
执行此模块的主机需要以下要求。
Docker API >= 1.25
backports.ssl_match_hostname (在 Python 2 上使用 TLS 时)
paramiko (在使用 SSH 且
use_ssh_client=false
时)pyOpenSSL (在使用 TLS 时)
pywin32 (在 Windows 32 上使用命名管道时)
requests
参数
参数 |
注释 |
---|---|
Docker 主机上运行的 Docker API 的版本。 默认为此集合和 docker 守护程序支持的最新 API 版本。 如果任务中未指定该值,则将使用环境变量 默认值: |
|
通过提供 CA 证书文件的路径来执行服务器验证时使用 CA 证书。 如果任务中未指定该值并且已设置环境变量 此选项以前称为 |
|
在其中运行命令的目录。 |
|
客户端 TLS 证书文件的路径。 如果任务中未指定该值并且已设置环境变量 |
|
客户端 TLS 密钥文件的路径。 如果任务中未指定该值并且已设置环境变量 |
|
要在其中执行命令的容器名称。 |
|
调试模式 选项
|
|
是否同步运行命令( 如果设置为 选项
|
|
用于连接到 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定此值,则将改用环境变量 默认值: |
|
包含环境变量及其相应值的字典,这些值将传递到容器内运行的命令。 YAML 解析器可能将解析为数字、布尔值或其他类型的值必须用引号括起来(例如 请注意,如果您使用 Jinja2 模板传入值,例如 |
|
将命令的标准输入直接设置为指定的值。 只有在 |
|
从结果中 stdout/stderr 末尾删除空行。 选项
|
|
通过使用 TLS 来保护与 API 的连接,而无需验证 Docker 主机服务器的真实性。请注意,如果也设置了 如果任务中未指定此值,则将改用环境变量 选项
|
|
验证 Docker 主机服务器的真实性时,请提供服务器的预期名称。 如果任务中未指定此值,则将改用环境变量 请注意,此选项在较旧的版本中具有默认值 |
|
是否分配 TTY。 选项
|
|
对于 SSH 传输,请使用 选项
|
|
如果指定,则使用该用户执行此命令。 |
|
通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。 如果任务中未指定此值,则将改用环境变量 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
操作组: community.docker.docker, docker |
在 |
|
支持:不支持 |
可以在 |
|
支持:不支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
备注
注意
使用
stdin
时,**不适用于 TCP TLS 套接字**。这是由于无法在不使用 Python 的SSLSocket
关闭连接的情况下发送close_notify
造成的。有关更多信息,请参见 https://github.com/ansible-collections/community.docker/issues/605。如果需要评估
command
或argv
中的容器环境变量,则需要通过 shell 传递命令,例如command=/bin/sh -c "echo $ENV_VARIABLE"
。通过为每个任务提供参数或定义环境变量来连接到 Docker 守护程序。您可以定义
DOCKER_HOST
、DOCKER_TLS_HOSTNAME
、DOCKER_API_VERSION
、DOCKER_CERT_PATH
、DOCKER_TLS
、DOCKER_TLS_VERIFY
和DOCKER_TIMEOUT
。如果您使用的是 docker machine,请运行产品附带的设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参见 https://docs.docker.net.cn/machine/reference/env/。此模块**不**使用 Docker SDK for Python 与 Docker 守护程序进行通信。它使用源自 Docker SDK 或包含在此集合中的 Python 代码。
示例
- name: Run a simple command (command)
community.docker.docker_container_exec:
container: 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_container_exec:
container: foo
argv:
- /bin/bash
- "-c"
- "ls -lah > /dev/stderr"
chdir: /root
register: result
- name: Print stderr lines
ansible.builtin.debug:
var: result.stderr_lines
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
容器命令的标准错误输出。 返回:成功且 |
|
容器命令的标准输出。 返回:成功且 |