ansible playbook скопировать файл в контейнер docker

#file #docker #ansible #copy

#файл #docker #ansible #Копировать

Вопрос:

Я хочу скопировать файл в контейнер docker с помощью ansible playbook. Как я могу это сделать?

 - name: kapacitor conf
  template: src=/home/debian/roles/tick_install/files/kapacitor.conf  dest=/etc/kapacitor/kapaci
  
 my docker container = tick_kapacitor
  

Комментарии:

1. Можете ли вы использовать настройки docker_container модуля volumes для внедрения файла вместо этого? Это была бы более типичная настройка Docker.

Ответ №1:

Я предполагаю, что вы используете обычный контейнер Docker без организованного решения (такого как Kubernetes или Swarm). Если ваш контейнер уже запущен, это будет зависеть:

Без смонтированного тома

Если вы хотите скопировать файл в существующий контейнер, у которого нет тома, смонтированного на том, куда вы хотите скопировать ваш файл, я не вижу другого способа, кроме как выполнить docker cp команду через shell или command , например:

 - name: Copy file into existing container at /path/in/the/container/kapaci
  shell: docker cp /etc/kapacitor/kapaci tick_kapacitor:/path/in/the/container/kapaci
  

С помощью тома, смонтированного в контейнере

Если у вас уже есть том, смонтированный с компьютера в контейнер, вы можете скопировать файл непосредственно в точку монтирования компьютера. Например, если в контейнере есть том, смонтированный из /var/myapp/data в /path/in/the/container , вы можете использовать template для копирования файла непосредственно в контейнер с его смонтированным томом:

 name: kapacitor conf 
template: 
  src: /home/debian/roles/tick_install/files/kapacitor.conf
  dest: /var/myapp/data/kapacitor.conf
  # will be available in container at /path/in/the/container
  

Запуск нового контейнера

Если вы хотите запустить новый контейнер, вы можете использовать docker_container модуль или запустить команду ( docker run , docker-compose up... …), которая запустит ваш контейнер, а затем скопирует в него файл, используя одно из ранее упомянутых решений.