도커 컨테이너에서 호스트 파일 접근 권한 문제 (docker uid)

2023. 9. 15. 13:51Infra

Issue

도커 컴포즈로 도커 실행시 File 권한 관련 에러가 발생

원인

  • 도커에서 volumes 로 로컬(리눅스) 파일들과 매칭을 시켜 사용
  • 도커에서 로컬 (리눅스) 파일로 접근시 기타 유저로 권한이 잡힘
  • 컨테이너 내부에서 UID 확인시 1000으로 확인
 💡 리눅스 커널을 공유하는 도커의 시스템 특성으로 인해 발생한 문제 ( 아래의 오른쪽 그림 )

해결 해야할 문제

  • 리눅스에서 777 권한을 주지않고 문제를 해결해야함

해결 방법

1. 볼륨의 연결을 끊는다 .

도커에서는 프로덕션 레벨에서 볼륨의 연결을 끊고 배포하는 것을 권장한다.

💡 프로덕션 레벨의 환경에서 Docker 컨테이너를 사용할 때 볼륨을 끊고 배포하는 접근 방식을 선택하는 주된 이유는 
보안과 데이터 격리

 

2. 도커를 실행할 때 user 를 지정해서 실행 해준다 .

  • docker run
docker run -d --user 0:0 <이미지_이름>
  • docker-compose
version: '3'

services:
  my_service:
    image: <이미지_이름>
    user: "0:0"
    # 기타 설정 ...