Сначала создайте том sample_vol
docker volume create sample_vol
Мой докерфайл
FROM archlinux/base
RUN touch /root/testing [**edited** find note at RUN below]
# VOLUME sample_vol:/root [**edited** this will not work, because VOLUME will not accpet named volumes. So this will not mount at /root, it will mount at sample_vol:/root which does not exist]
VOLUME "/root" or VOLUME ["/root"] [**edited** this will create a local mount volume only till the time the container is running. I tried to use named volumes like VOLUME ["name:/root"] but didnt work ]
# RUN touch /root/testing [**edited** this will not work because volume when mounted will only copy files till it got declared]
создать образ
docker build -t archlinux/sample_vol .
проверка, создан ли тестовый файл в sample_vol
docker run --rm -it -v=sample_vol:/tmp/myvolume archlinux/base ls /tmp/myvolume
Он не показывает никаких файлов, созданных для тестирования.
пока
$ docker run --rm -it --name sample_vol archlinux/sample_vol ls /root/testing
Он показывает, что файл testing
создан в /root/
образа сборки.
Так почему же sample_vol
не монтируется в /root
, а внутри него создается testing
.
Обновление: причина, по которой я обнаружил, может быть связана с
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#volume
Изменение тома из Dockerfile: если какие-либо шаги сборки изменят данные внутри тома после его объявления, эти изменения будут отменены.