Я немного странно себя чувствую в отношении томов. У нас есть контейнер, который содержит базу данных, и ожидается, что он свяжет папки монтирования с хоста, который содержит данные. Я пытаюсь создать дочерний контейнер, который поставляется с тестовыми данными, так как он просто используется для тестирования.
Для этого требуется, чтобы на этапе сборки некоторые данные копировались с хост-машины, а затем выполнялись некоторые сценарии, которые создают дополнительные файлы. Однако я заметил, что когда я смотрю на работающий контейнер, существуют только скопированные файлы, а созданные скриптами - нет. Я выполнил шаги до следующего файла Docker:
FROM ubuntu:xenial-20180112.1
VOLUME /test
COPY /test/copydir/copyfile.txt /test/copydir/copyfile.txt
RUN mkdir -p /test/mkdir && \
touch /test/mkdir/touch.txt
Обратите внимание, что когда я захожу в работающий контейнер и выполняю
ls -l /test
Я получаю только папку «copydir». Однако, если я запускаю ls в моем файле Docker, я вижу, что обе папки существуют.
Что здесь происходит?
редактирование:
Для дополнительного контекста следующее распечатывает, что оба каталога существуют:
FROM ubuntu:xenial-20180112.1
VOLUME /test
COPY /test/copydir/copyfile.txt /test/copydir/copyfile.txt
RUN mkdir -p /test/mkdir && \
touch /test/mkdir/touch.txt && \
ls -l /test
Но следующее только показывает, что copydir существует:
FROM ubuntu:xenial-20180112.1
VOLUME /test
COPY /test/copydir/copyfile.txt /test/copydir/copyfile.txt
RUN mkdir -p /test/mkdir && \
touch /test/mkdir/touch.txt
RUN ls -l /test