2016-07-18 2 views
2

Я хочу выполнить команды оболочки, например, например: «wget» в контейнере работающего докера, используя Ansible. Это плей-лист, который я пытаюсь выполнить.Запустите команду оболочки внутри работающего контейнера Docker, используя Ansible

--- 

- 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 или есть ли другой способ сделать это с помощью Ansible?

+1

Это плохая практика, а не хороший способ использовать Докер. Вероятно, вам следует переосмыслить, как вы используете Docker или использовать виртуальную машину. Тем не менее, Майкл отвечает на ваш вопрос. – smiller171

+0

Возможный дубликат [Run Command Inside of Docker Container using Ansible] (http://stackoverflow.com/questions/32878795/run-command-inside-of-docker-container-using-ansible) – techraf

+0

Re: duplicate, [this answer] (https://stackoverflow.com/a/41626257/1347604) из другого вопроса описывает другой подход к этой же проблеме, используя соединение _docker_, введенное в Ansible 2.0 и модуль _raw_, который здесь не рассматривается. –

ответ

2

Вы ищете эквивалент анзибля в Docker Exec командной строки.

Команда в анзибль docker_container является эквивалентом опции команды в Docker запустить командной строки.

Не похоже, что этот новый модуль Ansible поддерживает это. Вам просто нужно использовать общую команду Ansible.

Пример:

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

Небольшое изменение, я использовал эту команду 'docker exec -i '{{container_name}}"/bin/bash -c' для выполнения '' – shwetha

2

AFAIK нет никакого способа, вы можете сделать это с docker_container модулем - используется, чтобы начать новый контейнер с указанной командой.

Я использую этот код для выполнения команд внутри контейнеров:

- name: Execute command inside a container 
    shell: "docker exec {{ containerName }} {{ commandToRun }}" 
Смежные вопросы