Monté el contenedor con este parámetro:
-v / inicio / prueba /: / inicio / prueba
Dentro de / home / test en el host hay un enlace simbólico que apunta a una carpeta / mnt /.
Pero ese enlace, aunque se puede ver hacia dónde apunta, parece roto dentro del contenedor:
root@f93f72b45013:/var/www/html# cd /home/test/
root@f93f72b45013:/home/test# ls -lrt
total 11956
lrwxrwxrwx. 1 root root 40 Jul 20 15:55 file -> /mnt/mountedfile/
root@f93f72b45013:/home/test# ls -lrt file/*
ls: cannot access file/*: No such file or directory
¿Es posible hacerlo en la ventana acoplable? No estoy seguro de si hay alguna forma de hacerlo.
Sé que puedo montar directamente donde apunta el enlace simbólico, pero me preguntaba si esto es posible.
/mnt
punto final, que puede ser específico del host; lo más seguro sería evitarlo si puede.Respuestas:
Los enlaces simbólicos son un gran desafío dentro de Docker. En su caso, puede montar ambos directorios:
Para que los enlaces simbólicos funcionen tanto dentro como fuera del contenedor, deben ser rutas absolutas y usar exactamente los mismos nombres.
En general, los enlaces simbólicos no funcionan dentro de Docker. Encontré esto de la manera más difícil.
fuente
docker-compose
configuración sería así.volumes: [./:/var/www, ./public/storage:/var/www/public/storage]
. Aquí,public/storage
hay un enlace simbólico a./storage/app/public
. ¡Gracias por la solución!Una solución es hacer que Docker monte el archivo original, pero use el
readlink -f
que imprime la ubicación real del archivo. De esta manera, aún puede hacer referencia a la ubicación del enlace simbólico en su comando, por ejemplodocker run -it -v $(readlink -f /home/test/):/home/test/ ...
fuente
perl -MCwd -le 'print Cwd::abs_path(shift)' "$path"
(de stackoverflow.com/questions/7665/… )