728x90
반응형
failed to solve: archive/tar: unknown file mode ?rwxr-xr-x
Windows와 Linux/Unix 시스템 간의 파일 권한 처리 방식 차이 때문에 발생하는 문제입니다.
주요 원인 → 운영체제 차이
- Windows: 파일 권한을 ACL(Access Control List)로 관리
- Linux/Unix: 파일 권한을 rwx(읽기/쓰기/실행) 형식으로 관리
- Docker는 Linux 기반이라 Linux 스타일의 권한 체계를 사용
# Copy application code with explicit permissions
# 방법 1: Dockerfile에서 명시적 권한 설정
COPY --chmod=755 /app /app
# 방법 2: 복사 후 권한 변경
COPY . .
RUN chmod -R 755 /app
# 방법 3: 특정 사용자로 실행 (UID 변경)
USER 1000
- COPY 명령어에
--chmod=755옵션을 추가하여 명시적으로 파일 권한을 설정 - 추가로 권한 문제를 방지하기 위해 전체 애플리케이션 디렉토리에 대해 권한을 설정
- 보안을 위해
on-root유저로 실행하도록 설정
더보기
- --chmod=755 옵션?
파일이나 디렉토리의 권한을 소유자에게는 모두, 그룹과 기타 사용자에게는 읽기와 실행만 허용하도록 설정 - 1번과 2번 차이?
- 1번 : 애플리케이션 복사할 때 복사 시점에 파일과 폴더 권한을 755로 즉시 지정한다.
별도의 RUN 명령어가 없어 추가 레이어가 생성되지 않아 이미지 용량과 빌드 속도 측면에서 효율적이다. - 2번 : 먼저 파일을 복사한 후, 권한 변경을 위한 RUN 명령어가 실행되어 복사 이후에 권한이 재설정된다.
RUN 명령어는 추가적인 Docker 레이어를 만들어 빌드 속도나 이미지 크기에 영향을 줄 수 있다.
권한 변경 작업을 더 세밀하게 조정하거나 예외 처리를 할 수 있는 유연성이 있다. - 1번은 간단하고 효율적인 권한 지정에 적합하고, 2번은 복잡한 권한 설정이 필요할 때 유리
- 1번 : 애플리케이션 복사할 때 복사 시점에 파일과 폴더 권한을 755로 즉시 지정한다.
- USER 1000인 이유?
리눅스 계열 운영체제는 첫 번째로 생성되는 일반 계정(예: 설치 시 입력한 사용자)의 UID를 1000으로 자동 할당
Windows에서 Docker를 사용할 때는 WSL2를 사용하는 것이 권한 문제를 피하는 가장 좋은 방법
- Windows에서 Docker를 사용할 때는 WSL2를 사용하는 것이 권한 문제를 피하는 가장 좋은 방법
- WSL2는 리눅스 파일시스템을 사용하므로 권한 관련 문제가 거의 발생하지 않음
'ETC > Tool' 카테고리의 다른 글
| [Claude] 클로드 터미널 스타일 6가지 한눈에 보기 (0) | 2025.09.28 |
|---|---|
| [AI Tool] 'Jules' 구글의 새로운 AI 코딩 에이전트 (1) | 2025.05.22 |
| 패키지 매니저: npm, yarn, pnpm 비교하기 (0) | 2025.03.19 |
| 윈도우에서 포트 강제 종료하는 방법 (0) | 2025.03.08 |
| [VSCode] ENOSPC 에러 (1) | 2025.01.03 |