Тома Docker-Compose не монтируются рекурсивно - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть файл создания Docker, который содержит приведенное ниже сопоставление томов.

volumes:
    - /opt/cloudera/parcels/SPARK2/lib/spark2:/opt/cloudera/parcels/SPARK2/lib/spark2

Содержимое этого каталога:

rwxr-xr-x 13 root root   247 Nov 30 16:39 .
drwxr-xr-x  3 root root    20 Jan  9  2018 ..
drwxr-xr-x  2 root root  4096 Jan  9  2018 bin
drwxr-xr-x  2 root root    39 Jan  9  2018 cloudera
lrwxrwxrwx  1 root root    16 Jan  9  2018 conf -> /etc/spark2/conf ***
drwxr-xr-x  5 root root    50 Jan  9  2018 data
drwxr-xr-x  4 root root    29 Jan  9  2018 examples
drwxr-xr-x  2 root root  8192 May 22  2018 jars
drwxr-xr-x  2 root root   204 Jan  9  2018 kafka-0.10
drwxr-xr-x  2 root root   201 Jan  9  2018 kafka-0.9
-rw-r--r--  1 root root 17881 Jan  9  2018 LICENSE
drwxr-xr-x  2 root root  4096 Jan  9  2018 licenses
-rw-r--r--  1 root root 24645 Jan  9  2018 NOTICE
drwxr-xr-x  6 root root   204 Jan  9  2018 python
-rw-r--r--  1 root root  3809 Jan  9  2018 README.md
-rw-r--r--  1 root root   313 Jan  9  2018 RELEASE
drwxr-xr-x  2 root root  4096 Jan  9  2018 sbin
lrwxrwxrwx  1 root root    20 Jan  9  2018 work -> /var/run/spark2/work
drwxr-xr-x  2 root root    52 Jan  9  2018 yarn

Обратите внимание на помеченный каталог conf, который сам по себе является серией символических ссылок, которые в конечном итоге указывают на папку /etc/spark2/conf.cloudera.spark2_on_yarn, которая содержит:

drwxr-xr-x 3 root  root    194 Nov 30 16:39 .
drwxr-xr-x 3 root  root     54 Nov 12 14:45 ..
-rw-r--r-- 1 root  root  13105 Sep 16 03:07 classpath.txt
-rw-r--r-- 1 root  root     20 Sep 16 03:07 __cloudera_generation__
-rw-r--r-- 1 root  root    148 Sep 16 03:07 __cloudera_metadata__
-rw-r--r-- 1 ember 10000  2060 Nov 30 16:33 envars.test
-rw-r--r-- 1 root  root    951 Sep 16 03:07 log4j.properties
-rw-r--r-- 1 root  root   1837 Sep 16 03:07 spark-defaults.conf
-rw-r--r-- 1 root  root   2331 Sep 16 03:07 spark-env.sh
drwxr-xr-x 2 root  root    242 Sep 16 03:07 yarn-conf

При отображении каталога spark2 отображается только подпапка yarn-conf, spark-env.sh файл и другие файлы отсутствуют.

Является ли последовательность символических ссылок причиной отсутствия этих файлов?Если да, нужно ли явно устанавливать сопоставление для каждой отдельной папки, чтобы все необходимые зависимости отображались?У меня сложилось впечатление, что тома docker-compose будут рекурсивно монтировать все файлы / папки в определенном каталоге.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Монтирование bind должно точно воспроизводить содержимое хоста: conf внутри контейнера должна быть символическая ссылка на /etc/spark2/conf.Контейнер может иметь или не иметь ничего по этому пути, но Docker не рекурсивно ищет дерево, подключенное с привязкой, и не пытается делать что-то особенное с символическими ссылками.

Вы пытаетесь использовать docker run -v для "установки"Распределение Spark в вашем контейнере?Возможно, вам лучше создать автономный образ Docker с нужным вам программным обеспечением, а затем использовать привязку для монтирования только для вставки файлов конфигурации.Это может выглядеть примерно так:

docker run \
  -v /etc/spark2/conf:/spark/conf \
  -v $PWD/spark:/spark/work \
  mysparkimage
0 голосов
/ 01 декабря 2018

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

...