#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...
…), которая запустит ваш контейнер, а затем скопирует в него файл, используя одно из ранее упомянутых решений.