← 전체 글로 돌아가기

Docker

Docker 컨테이너의 권한 문제를 진단하는 방법

Docker 컨테이너에서 권한 에러가 발생하면, 원본 이미지의 설정부터 실행 환경까지 여러 곳을 확인해야 한다. 체계적인 진단 순서를 정리했다.

Docker 컨테이너를 운영하다 보면 권한 관련 에러에 자주 맞닥뜨린다. 같은 Dockerfile로 만든 이미지인데 서버마다 다르게 동작하거나, 특정 파일에 접근할 수 없는 일이 생긴다.

현재 실행 중인 컨테이너를 확인한다

먼저 문제가 발생한 컨테이너가 정말 실행 중인지 확인한다.

docker ps

컨테이너가 떠 있다면, 실행 로그를 살펴본다.

docker logs --tail=100 service-name

권한 거부 에러는 보통 명확한 메시지를 남긴다. 어느 파일에 접근할 수 없는지, 어떤 명령어가 실패했는지 파악한다.

이미지와 컨테이너의 상세 설정을 본다

docker inspect service-name

User, WorkingDir, Volumes 같은 정보가 중요하다. 특히 컨테이너가 어느 사용자로 실행되고, 어떤 디렉토리에서 실행되는지 확인해야 한다.

Dockerfile에서 USER 지시문을 확인한다

Docker 이미지가 빌드될 때 USER 지시문이 없으면, 기본적으로 root로 실행된다. 하지만 보안상 이유로 root가 아닌 사용자로 실행해야 한다면, 그 사용자가 필요한 권한을 가지고 있는지 확인해야 한다.

마운트된 볼륨의 소유권을 확인한다

Host의 디렉토리를 컨테이너에 마운트했을 때, 그 디렉토리의 소유자와 권한이 컨테이너 내 사용자와 맞지 않으면 접근 불가능하다. 호스트에서 ls -la 명령어로 소유권을 확인하고 필요하면 조정한다.

환경별 권한 설정이 다를 수 있다

로컬 개발 환경에서는 docker-compose가 자동으로 권한을 처리하지만, 운영 서버의 Kubernetes나 Docker Swarm에서는 직접 설정해야 할 수 있다. 각 환경의 설정 파일을 비교해서 권한 지시문이 일관되는지 확인한다.

권한 문제는 보안과도 관련되므로, 무작정 최대 권한을 주기보다는 필요한 최소 권한을 정확히 파악하고 적용하는 게 좋다.