По вашему вопросу:
... если я использую:
-v /folder:/var/jenkins_home
я вообще не вижу file.txt в jenkins. так что я здесь скучаю?
Тома хоста, иногда называемые связывающими монтированием из-за их базовой реализации, не инициализируют том из содержимого изображения. Только именованные тома обеспечивают поддержку инициализации от механизма докера. Однако можно выполнить именованный том для монтирования с другим синтаксисом. Вот несколько примеров различных способов сделать это:
# create the volume in advance
$ docker volume create --driver local \
--opt type=none \
--opt device=/home/user/test \
--opt o=bind \
test_vol
# create on the fly with --mount
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/home/user/test \
foo
# inside a docker-compose file
...
volumes:
bind-test:
driver: local
driver_opts:
type: none
o: bind
device: /home/user/test
...
В вашем случае вы можете сделать:
docker run -it --rm \
--mount type=volume,dst=/var/jenkins_home,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/folder \
...
Чтобы ответить на то, что вы на самом деле пытаетесь сделать:
Тем не менее, образ Jenkins определяет том в / var / jenkins_home, который блокирует вашу способность расширять образ с помощью команды RUN, которая изменяет эту папку. COPY и ADD просто работают, потому что они не создают временный контейнер. В качестве обходного пути разработчики Jenkins используют /usr/share/jenkins/ref/
внутри изображения в качестве источника для инициализации каталога / var / jenkins_home. Таким образом, ваш Dockerfile должен скопировать туда нужные файлы:
FROM jenkins/jenkins
COPY file.txt /usr/share/jenkins/ref/