使用Ansible在正在运行的Docker容器中运行shell命令

时间:2016-07-18 09:32:16

标签: docker ansible ansible-playbook

我想执行shell命令,例如:使用Ansible运行的docker容器中的“wget”命令。这是我试图执行的剧本

---

- name: Enter into a running container and run a command
  docker_container:
    name: centos_conatainer
    state: started
    image: centos
    command: wget https://downloadlink.com

这会停止容器,也不会下载文件。这是使用docker_container模块执行shell命令的正确方法,还是有其他方法可以使用Ansible执行此操作?

3 个答案:

答案 0 :(得分:3)

您正在寻找与 docker exec 命令行相当的Ansible。

ansible docker_container中的

命令等同于 docker run 命令行中的命令选项。

似乎这个新的Ansible模块不支持此功能。您只需使用通用的Ansible命令即可。

示例:

- name: Enter into a running container and run a command
  command: docker exec centos_container wget https://downloadlink.com

答案 1 :(得分:2)

AFAIK无法使用docker_container模块执行此操作 - 它用于使用指定的命令启动新容器。

我使用此代码在容器内执行命令:

- name: Execute command inside a container
  shell: "docker exec {{ containerName }} {{ commandToRun }}"

答案 2 :(得分:-3)