Sign In

OCI Ubuntu에서 Docker 권한 문제 해결 가이드

OCI(Oracle Cloud Infrastructure) Ubuntu 인스턴스에서 Docker/Docker Compose 사용 시 자주 발생하는 권한 문제를 해결하는 방법입니다.

문제 상황

ubuntu@instance:~$ id ubuntu uid=1001(ubuntu) gid=1001(ubuntu) groups=1001(ubuntu),... ubuntu@instance:~$ id opc uid=1000(opc) gid=1000(opc) groups=1000(opc),...
OCI Ubuntu 특징: opc(UID 1000)가 먼저 생성되어 ubuntu가 UID 1001을 차지합니다. AWS EC2 Ubuntu는 ubuntu가 UID 1000이라 Docker 권한 문제가 적습니다.

Docker 권한 충돌 원인

컨테이너 이미지 기본 사용자: UID 1000 기대
호스트 ubuntu: UID 1001
Volume 마운트 시 권한 불일치 → Permission denied

해결 방법 1: docker-compose user 설정 (권장)

# docker-compose.yml services: app: image: your-image user: "1001:1001" # ubuntu UID:GID volumes: - ./data:/app/data # 또는 동적 설정 # user: "${UID:-1001}:${GID:-1001}"
사용법:
# 환경변수로 동적 설정 export UID=$(id -u) # 1001 export GID=$(id -g) # 1001 docker compose up -d

해결 방법 2: 호스트 Volume chown

# 현재 사용자 확인 id ubuntu # uid=1001 확인 # Docker volume만 chown (안전) sudo chown -R 1001:1001 /home/ubuntu/docker-volumes sudo chmod -R 755 /home/ubuntu/docker-volumes # opc(1000) 사용 시 sudo chown -R 1000:1000 /home/ubuntu/shared-volumes

해결 방법 3: opc 사용자 전환

# opc로 전환 (UID 1000) sudo su - opc # Docker 작업 후 ubuntu로 복귀 exit

사용자 UID 확인 명령어

# 현재 사용자 whoami # ubuntu id # uid=1001(ubuntu) # 모든 사용자 확인 id ubuntu # uid=1001 id opc # uid=1000 getent passwd | grep -E '^(ubuntu|opc)'

⚠️ 주의사항

❌ 하지 말 것

# 홈 전체 변경 X (문제 발생) sudo chown -R 1000:1000 /home/ubuntu/ # 위험!
문제: .ssh, .config, 앱 데이터 접근 불가, 시스템 오류 발생

✅ 올바른 방법

# 특정 volume만 변경 sudo chown -R 1001:1001 /home/ubuntu/my-docker-app/

클라우드별 UID 비교

클라우드
기본 사용자
UID
OCI Ubuntu
ubuntu
1001 (opc가 1000 선점)
AWS EC2 Ubuntu
ubuntu
1000
GCP Ubuntu
사용자 지정
1000

완전한 docker-compose 예시

version: '3.8' services: web: image: nginx:latest user: "${UID:-1001}:${GID:-1001}" ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html:ro restart: unless-stopped app: image: node:18 user: "${UID:-1001}:${GID:-1001}" working_dir: /app volumes: - .:/app command: npm start

실행 스크립트

#!/bin/bash # fix-docker-permissions.sh echo "OCI Ubuntu Docker 권한 자동 설정" echo "현재 UID: $(id -u), GID: $(id -g)" # docker-compose 환경변수 설정 export UID=$(id -u) export GID=$(id -g) export DOCKER_USER="${UID}:${GID}" echo "DOCKER_USER=${DOCKER_USER} 설정 완료" echo "docker compose up 실행하세요"

요약 체크리스트

id ubuntu → uid=1001 확인
docker-compose에 user: "1001:1001" 추가
또는 sudo chown -R 1001:1001 ./docker-volumes
docker compose up 테스트
컨테이너 로그 확인: docker compose logs
결론: OCI Ubuntu에서는 user: "1001:1001" 설정이 가장 간단하고 안전합니다! 🚀