2015-01-25 1 views
2

я докер изображение (MyBase), созданное из файла с двумя объемамиКак я могу включать в себя данные об объеме в Докер изображении

# set volume mount points for installation and home directory 
VOLUME ["/usr/local/data", "/var/local/data"] 

Теперь я хочу, чтобы новое изображение для производства, которые будут иметь эти данные как часть изображения, так что я могу просто потянуть его. Но я не знаю, как получить доступ к этим данным.

Я хочу сделать что-то вроде этого. Это будет мой новый Dockerfile for prod, который будет создавать изображения из текущего

FROM mybase 
ADD /usr/local/data:/usr/local/data 

Но реж не на хозяина, так что я не знаю, как я могу добавить его

ответ

3

В зависимости от характера данных вы также можете увидеть его как часть изображения. В таком случае вы можете переносить эти файлы с изображением. Вы можете структурировать это как базовое изображение и изображение для конкретной сборки, которая будет построена на хосте, который имеет доступ к файлам необходимо (например, узел CI сборки):

FROM mybase 
ADD <source of installation> /usr/local/data 
ADD <source of the home data> /var/local/data 

Этот новый образ (возможно, версированное за сборку) будут вытащены с содержимым /usr/local/data и /var/local/data на целевую среду.

При работе в среде (производство) вы можете по-прежнему использовать технику контейнера данных, если это необходимо:

docker run --it -v /usr/local/data -v /var/local/data --name my_app_data_container <my_repo>/<my_app>:<build> /bin/false 
docker run -d --volumes-from my_app_data_container --name my_app_daemon <my_repo>/<my_app>:<build> 
1

У меня был тот же вопрос, и, наконец, решил сделать резервную копию и восстановить the way they describe in the documentation:

для резервного копирования:

sudo docker run --volumes-from dbdata-prod \ 
    -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata 

... и восстановление ...

sudo docker run --volumes-from dbdata-test \ 
    -v $(pwd):/backup busybox tar xvf /backup/backup.tar 
+0

спасибо за это, так что это означает, что каждый, когда при изменении кода я должен сделать так. это выглядит очень плохой метод развертывания. Я не понимаю, почему я не могу добавить код в изображение докеров. Я действительно не вижу смысла использовать тома и контейнеры данных. использование хост-хоста делает все так просто. я могу просто добавить код с хоста без каких-либо проблем, кроме разрешений. – user3214546

+0

Если у вас есть код на хосте и вы хотите его монтировать в контейнерах, вы делаете то, что я делал до недавнего времени, но с ним все еще сложно справиться. Я изменил это, чтобы использовать контейнеры данных и написал небольшую утилиту, которая упрощает доступ к коду в контейнерах данных. Он называется Docker Shell (dsh) и обеспечивает доступ к оболочке и файлу общего доступа к контейнеру данных, содержащему код, над которым вы работаете. https://github.com/Notalib/dsh – mzedeler

+0

Моя основная причина перехода на подход к чистому контейнеру заключается в том, что теперь я могу позволить другим разработчикам создать всю среду контейнера на своей рабочей станции независимо от их ОС (они просто используют boot2docker) и предпочтительной IDE. dsh - это все, что им нужно, чтобы загрузить его. – mzedeler