[docker] Docker 컨테이너 내부에 심볼릭 링크가있는 호스트 디렉터리 마운트

이 매개 변수를 사용하여 컨테이너를 마운트했습니다.

-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/ ...


답변