2017-01-30 5 views
2

Я создал следующий Docker файлDocker объем воссоздает новый целевой путь каждый раз, когда

FROM resin/rpi-raspbian:jessie-20160831 
.. 
RUN mkdir -p /usr/bin/asmp 
COPY src /usr/bin/asmp/ 
VOLUME /usr/bin/asmp/data 
.. 

В копировальном действии копирует структуру каталогов, как это:

data 
    db.sqlite3 
web 
    ... 
worker 
    ... 

Я не просто запустить контейнер, используя что-то вроде этого:

docker run -p 8000:8000 asmp 

Когда я инспектировать я вижу это:

"Mounts": [ 
     { 
      "Name": "30ccc87580cd85108cb4948798612630640b5564f66de848a4e2f77db8148d3a", 
      "Source": "/var/lib/docker/volumes/30ccc87580cd85108cb4948798612630640b5564f66de848a4e2f77db8148d3a/_data", 
      "Destination": "/sys/fs/cgroup", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true, 
      "Propagation": "" 
     }, 
     { 
      "Name": "c4473031d209eb29d3f454be68325c6b1f33aa660185bf57e8abb91a56bb260e", 
      "Source": "/var/lib/docker/volumes/c4473031d209eb29d3f454be68325c6b1f33aa660185bf57e8abb91a56bb260e/_data", 
      "Destination": "/usr/bin/asmp/data", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true, 
      "Propagation": "" 
     } 
    ], 

Когда я останавливаю контейнер (убивая его), а затем снова запускаю его, он создает новый том в другой каталог. Так что мне интересно, как справиться с этой ситуацией? Я запускаю/останавливаю контейнер неправильно? Или я должен указать объем по-разному? Я знаю, что вы можете указать целевой путь, но могу ли я (и должен ли я) указать это в файле докеров? Я скорее задаю настройки громкости в файле докеров, так как команда запуска уже имеет множество параметров для перенаправления портов и устройств.

Любые мысли?

ответ

1

Необходимо указать назначение тома при запуске контейнера. Read about volumes

docker run -p 8000:8000 --volume=<path_on_host>:/usr/bin/asmp/data asmp

+0

Что, чем точка определения его в dockerfile, если вам все равно придется определить его в команде запуска? –

+0

К сожалению, вы не можете определить его в Dockerfile. Позвольте мне показать вам [Dokerfile volume reference] (https://docs.docker.com/engine/reference/builder/#/volume) VOLUME ожидает только один аргумент, это может быть строка или массив строки, который содержит точки монтирования внутри контейнер. –

+0

Давайте посмотрим на инструмент docker-compose (https://docs.docker.com/compose/overview/). Это позволяет писать файл конфигурации, когда вы можете определить все переменные для запуска контейнера. –