2015-03-18 1 views
0

Итак, я пытаюсь упаковать изображение WordPress таким образом, что сохраняются все файлы, кроме загрузок. Для этого я создал свой файл Docker, который использует официальное изображение WordPress в качестве его базы, и добавляет файлы из архива (содержащие все файлы WordPress, темы, плагины и т. Д.), Например:Docker: контейнер объема данных не создается с помощью команды `docker create`

FROM wordpress 

ADD archive.tar.gz /var/www/html/ 

Поскольку я хочу, чтобы загрузки сохранялись, я создал отдельный контейнер тома данных, например test2.com-wp-data:

docker create -v /var/www/html/wp-content/uploads —name test2.com-wp-data wordpress 

Тогда я просто установить его с помощью —-volumes-from флага:

docker run —name test2.com --volumes-from test2.com-wp-data -d --link test2.com-mysql:mysql myimage 

Однако, когда я осмотреть мой вновь созданный контейнер, я не могу найти /var/www/html/wp-content/uploads:

# docker inspect -f '{{.HostConfig.VolumesFrom}}' test2.com 
[test2.com-wp-data]  

# docker inspect -f '{{.Volumes}}' test2.com 
map[/var/www/html:/var/lib/docker/vfs/dir/4fff1d36d5aacd0b2c73977acf8fe680bda6fd891f2c4410a90f6c2dca4aaedf] 

Я могу видеть что оба /var/www/html и /var/www/html/wp-content/uploads настроены как объемы в моем контейнере данных test2.com-wp-data:

# docker inspect -f '{{.Config.Volumes}}' test2.com-wp-data 
map[/var/www/html:map[] /var/www/html/wp-content/uploads:map[]] 

Я знаю, что wordpress изображение по умолчанию создает /var/www/html объем, для которого я не возражаю, но это означает, что что-нибудь, что находится ниже этой папки игнорируется, если установлена ​​отдельно? Мне нужно будет создать собственное изображение WordPress, чтобы установить /var/www/html/wp-content/uploads в качестве тома в моем контейнере WordPress?

Большое спасибо за ваше время!

EDIT: Я тестировал другую настройку с папкой, которая не имеет ничего общего с /var/www/html, и результат будет таким же: —-volumes-from игнорируется.

ответ

0

Ну, после некоторого дополнительного тестирования я понял, что, несмотря на то, что указано в документации, недостаточно одного docker create, чтобы получить рабочий объем данных. Я сумел только получить рабочие объемы данных по инстанцировании их с помощью команды docker run следующего образом:

docker run —-name data -v /var/www/html/wp-content/uploads mysql true 

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

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

Спасибо!

EDIT: Оказывается, я использовал Docker 1.3.x, который еще не реализовал эту функцию, поэтому почему документация вводит меня в заблуждение!

1

Версия 1.4 + докера должна быть тем, что вам нужно, чтобы получить эту работу. Старые версии докеров не похожи на контейнеры только для данных, созданные с помощью «create», а не «run».

Смежные вопросы