Подключить каталог хоста с символической ссылкой внутри контейнера докеров
Я установил контейнер с этим параметром:
-v/home/test/:/home/test
Внутри/home/test в хосте есть символическая ссылка, указывающая на папку /mnt/.
Но эта ссылка, хотя видно, где она указана, кажется разбитой внутри контейнера:
[email protected]:/var/www/html# cd /home/test/
[email protected]:/home/test# ls -lrt
total 11956
lrwxrwxrwx. 1 root root 40 Jul 20 15:55 file -> /mnt/mountedfile/
[email protected]:/home/test# ls -lrt file/*
ls: cannot access file/*: No such file or directory
Возможно ли это сделать в докере? Я не уверен, есть ли способ сделать это.
Я знаю, что могу просто подключиться туда, где указывает символическая ссылка, но мне просто интересно, возможно ли это.
Ответы
Ответ 1
Symlink - большая проблема внутри докера. В вашем случае вы можете установить обе директории
-v/home/test/:/home/test -v/mnt/смонтированный файл:/mnt/смонтированный файл
Для символических ссылок для работы внутри и снаружи контейнера должны быть абсолютные пути и использовать точно такие же имена.
В общем, символические ссылки не работают внутри докера. Я нашел это трудным способом.
Ответ 2
Одним из решений является создание Docker для монтирования исходного файла, но используйте readlink -f
, который печатает фактическое местоположение файла. Таким образом, вы можете по-прежнему ссылаться на расположение символической ссылки в вашей команде, например.
docker run -it -v $(readlink -f /home/test/):/home/test/ ...