[Docker] 도커 컨테이너의 볼륨 경로에 접근했을 때, permission denied 에러 해결 방법.(docker volume, 도커 볼륨)
2021. 10. 18. 16:30ㆍTool/docker
728x90
728x90
컨테이너 생성.
- oracle11g image로 테스트함. 컨테이너의 볼륨 경로는 "/u01/app/oracle"임.
$docker run -idt --name oracle11g -p 1521:1521 -v /root/oracle11g:/u01/app/oracle jaspeen/oracle-xe-11g
컨테이너 접속.
$docker exec -it oracle11g bash
컨테이너의 볼륨 경로("/u01/app/oracle")에 접근했을 때, permission denied 에러 발생하는 것을 확인.
root@164141af3f5e:/u01/app/oracle $ls
ls: cannot open directory .: Permission denied
컨테이너의 볼륨 경로에 접근 시, permission denied 에러 해결 방법.
- 해결 방법 1."$docker run"할 때, "--privileged" 옵션 설정.(docker compose의 "privileged: true" 설정과 동일함.)
#--privileged=true
docker run -idt --name oracle11g -p 1521:1521 --privileged=true -v /root/oracle11g:/u01/app/oracle jaspeen/oracle-xe-11g
- 해결 방법 2."$docker run"할 때, ":z" or ":Z" 옵션 추가.
#:z
$docker run -idt --name oracle11g -p 1521:1521 -v /root/oracle11g:/u01/app/oracle:z jaspeen/oracle-xe-11g
#:Z
$docker run -idt --name oracle11g -p 1521:1521 -v /root/oracle11g:/u01/app/oracle:Z jaspeen/oracle-xe-11g
해결 방법을 적용 후 컨테이너의 볼륨 경로에 접근이 가능한 것을 확인.
root@907e62c5a35f:/u01/app/oracle $ls -al
...
drwxr-x---. 4 oracle dba 33 Oct 18 07:13 admin
drwxr-xr-x. 2 oracle dba 21 Nov 26 2015 dbs
drwxrwxr-x. 4 oracle dba 32 Oct 18 07:13 diag
drwxr-x---. 3 oracle dba 15 Oct 18 07:13 fast_recovery_area
drwxr-xr-x. 3 oracle dba 15 Oct 18 07:13 oradata
drwxr-xr-x. 3 oracle dba 17 Oct 18 07:13 oradiag_oracle
lrwxrwxrwx. 1 root root 23 Oct 18 07:13 product -> /u01/app/oracle-product
…
local의 볼륨 경로에서 볼륨 처리 되었는지 확인.
root@/root/oracle11g $ls -al
...
drwxr-x---. 4 infini infini 33 10월 18 16:13 admin
drwxr-xr-x. 2 infini infini 21 11월 26 2015 dbs
drwxrwxr-x. 4 infini infini 32 10월 18 16:13 diag
drwxr-x---. 3 infini infini 15 10월 18 16:13 fast_recovery_area
drwxr-xr-x. 3 infini infini 15 10월 18 16:13 oradata
drwxr-xr-x. 3 infini infini 17 10월 18 16:13 oradiag_oracle
lrwxrwxrwx. 1 root root 23 10월 18 16:13 product -> /u01/app/oracle-product
...
에러 해결 방법 참고 사항.
- "--privileged" 옵션은 보안 위험이 존재함.(":z" or ":Z" 옵션은 보안 위험이 "--privileged" 옵션보다 덜함.)
- ":z" 옵션은 바인드한 마운트 콘텐츠가 여러 컨테이너 간에 공유됨.
- ":Z" 옵션은 바인드한 마운트 콘텐츠가 비공개이고 공유되지 않음.
728x90
728x90