본문 바로가기
클라우드/도커

[도커] failed to register layer: max depth exceeded 에러 해결 방법(MacOS 기준)

by 클레어몬트 2025. 4. 23.

failed to register layer: max depth exceeded

 

 

보통 이런 에러는 도커 이미지 용량이 가득 찼거나, file descriptors 값이 낮아서 생기는 문제이다

만약 도커 이미지 용량이 가득 찼다면? 디스크 공간 확보를 위해 그냥 안 쓰는 것들을 삭제해주면 된다!

.

.

.

하지만 file descriptors값이 낮다면? 앞으로 편하게 값을 영구적으로 늘려주자

오늘은 이 file descriptors 값을 영구적으로 늘리는 방법에 대해 다뤄보려 한다

 

 

우선, 아래 명령어로 file descriptors (-n) 값 확인

ulimit -a

 

만약 256으로 설정되어 있다면 65536으로 변경해주자!

 

이게 중요한 이유

  • Docker는 이미지 레이어를 처리할 때 동시에 많은 파일 핸들을 열어야 하는 경우가 있음
  • 256은 Docker 작업에서 특히 대형 이미지나 복잡한 레이어를 다룰 때 부족할 수 있다!
  • 따라서 이게 failed to register layer: max depth exceeded 오류와 연결될 가능성이 있다~.~

 

그래서 많은 개발자들이 이 기본 설정 값을 늘리는 경우가 많다

(늘려도 안전하니 안심하고 늘려도 된다 ㅎㅎ)

 

 

[MacOS Catalina 버전 미만 해결법]

sysctl.conf 파일 열기

sudo launchctl limit maxfiles 65536 65536

 

 

파일에 아래 값들을 설정!

kern.maxfiles=65536
kern.maxfilesperproc=65536

 

이렇게 하면 영구적으로 설정이 된다

 

 

 

[MacOS Catalina 버전 이상 해결법]

똑같이 file descriptors 값이 낮아서 생기는 문제이다! 값을 65536으로 늘려주자

하지만 맥북 최신 OS 버전에서는 더 이상 /etc/launchd.conf 방식 지원을 중단했기 때문에 더 이상 적용되지 않는다

그래서 우리는 plist 파일을 사용해서 설정해야 한다

 

1. plist 파일 생성

sudo vim /Library/LaunchDaemons/limit.maxfiles.plist

 

 

2. 아래 내용 붙여넣기

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
        <string>launchctl</string>
        <string>limit</string>
        <string>maxfiles</string>
        <string>65536</string>
        <string>65536</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

 

 

3. 권한 설정

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo chmod 644 /Library/LaunchDaemons/limit.maxfiles.plist

 

 

이렇게 하면 영구적으로 설정이 된다

재부팅 후에 한번 아래 커맨드로 확인해보자!

ulimit -n

 

 

 

 

 

 

#SK, #SKALA, #SKALA1기