[Docker] 도커 컨테이너의 볼륨 경로에 접근했을 때, permission denied 에러 해결 방법.(docker volume, 도커 볼륨)

2021. 10. 18. 16:30Tool/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