Docker Compose volume 권한 문제 해결: WSL을 활용한 효과적인 해결 방법
```
Docker Compose volume 권한 문제 해결: WSL을 활용한 효과적인 해결 방법
```
이번 글을 통해 배워갈 내용
- 상황
- 해결 방법
상황
새로 세팅한 컴퓨터 도커 컨테이너 환경에
Postgresql을 사용하려고 보니
volume 생성에 문제가 발생했습니다
Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
2024-01-14 15:15:17.597 UTC [83] FATAL: data directory "/var/lib/postgresql/data" has invalid permissions
2024-01-14T15:15:17.597261337Z 2024-01-14 15:15:17.597 UTC [83] DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
2024-01-14T15:15:17.602689641Z child process exited with exit code 1
2024-01-14T15:15:17.602772476Z initdb: removing contents of data directory "/var/lib/postgresql/data"
먼저 인터넷과 stackoverflow에 나온 대로
제어된 폴더 액세스 설정을 변경하는 방법으로는 진행이 되지 않았습니다
attrib -r +s "폴더디렉토리"
리눅스 상에서는
directory 권한이 변경가능하지만
아래의 코드로는 해결되지 않았습니다
sudo cmod 700 /data
이건 도커에 문제 같아 보였습니다
그리고 고민 끝에 해결 방법을 찾았습니다
해결방법
Hyper-V 방식 대신에 WSL 설정을 사용해서 해결했습니다
1단계 - Linux용 Windows 하위 시스템 사용
관리자 권한 cmd 또는 powershell에서
아래와 같은 명령어를 사용합니다
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- dism.exe: Windows Deployment Image Service Management Tool로, Windows의 기능을 관리하는 도구입니다.
- /online: 현재 실행 중인 운영 체제에 대한 작업을 수행한다는 옵션입니다.
- /enable-feature: 지정된 기능을 활성화한다는 옵션으로, WSL을 활성화하는 역할을 합니다.
- /featurename:Microsoft-Windows-Subsystem-Linux: 활성화하려는 기능의 이름을 지정하는 옵션으로, 여기서는 Linux용 하위 시스템인 WSL을 지정하고 있습니다.
- /all: 모든 사용 가능한 기능을 대상으로 작업을 수행한다는 옵션입니다.
- /norestart: 작업을 완료한 후 시스템을 다시 시작하지 않도록 하는 옵션입니다.
2단계 - WSL 2 실행을 위한 요구 사항 확인
WSL 2로 업데이트하려면 Windows 10 이상에서 실행해야 합니다.
아래의 버전 및 빌드를 확인하세요.
x64 시스템의 경우: 버전 1903 이상, 빌드 18362.1049 이상.
ARM64 시스템의 경우: 버전 2004 이상, 빌드 19041 이상.
3단계 - Virtual Machine 기능 사용
관리자 권한 cmd 또는 powershell에서
아래와 같은 명령어를 사용합니다
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
4단계 - Linux 커널 업데이트 패키지 다운로드
관리자 권한 cmd 또는 powershell에서
아래와 같은 명령어를 사용합니다
wsl.exe --install
wsl.exe --update
5단계 - WSL 2를 기본 버전으로 설정
관리자 권한 cmd 또는 powershell에서
아래와 같은 명령어를 사용합니다
wsl --set-default-version 2
6단계 - Docker Desktop
Docker Desktop에서 다음과 같이 설정합니다
Settings > General > Use the WSL 2 based engine Check
7단계 - 컴퓨터 재시작
모든 설정이 완료되면 컴퓨터를 재시작하세요.
8단계 - 다시 볼륨과 함께 도커 컴포즈 실행
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용