이 매개 변수를 사용하여 컨테이너를 마운트했습니다.
-v / 홈 / 테스트 / : / 홈 / 테스트
호스트의 / home / test 안에는 / mnt / 폴더를 가리키는 심볼릭 링크가 있습니다.
그러나 해당 링크는가 가리키는 곳에서 볼 수 있지만 컨테이너 내부에서 깨진 것처럼 보입니다.
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
도커에서도 가능합니까? 나는 그것을 할 방법이 있는지 확실하지 않습니다.
심볼릭 링크가 가리키는 곳에 직접 마운트 할 수 있다는 것을 알고 있지만 이것이 가능한지 궁금합니다.
답변
Symlink는 docker 내부에서 큰 도전입니다. 귀하의 경우 두 디렉토리를 모두 마운트 할 수 있습니다.
-v /home/test/:/home/test -v /mnt/mountedfile:/mnt/mountedfile
심볼릭 링크가 컨테이너 내부와 외부에서 모두 작동하려면 절대 경로 여야하고 정확히 동일한 이름을 사용해야합니다.
일반적으로 심볼릭 링크는 도커 내에서 작동하지 않습니다. 나는 이것이 어려운 길을 발견했다.
답변
한 가지 해결책은 Docker가 원본 파일을 마운트하도록 readlink -f
하는 것이지만 파일의 실제 위치를 인쇄하는 것을 사용 합니다. 이렇게하면 명령에서 심볼릭 링크 위치를 계속 참조 할 수 있습니다.
docker run -it -v $(readlink -f /home/test/):/home/test/ ...