먼저 확인된 마운트 소스와 대상을 점검한 다음, 호스트 경로가 비어 있는 경우와 애플리케이션이 초기화되지 않았거나 권한이 없는 경우를 구분하세요.
컨테이너를 다시 생성했을 때 사용자, 라이브러리, 데이터베이스 또는 이전 구성이 전혀 없는 상태로 열리면 이 판단이 중요합니다. 가능한 두 상태는 잘못되었거나 비어 있거나 다른 마운트에 가려진 마운트와, 올바르게 마운트되었지만 초기화 또는 액세스에 실패한 경우입니다. 저장된 구성과 폐기 가능한 데이터로 시작하고, 한 번에 한 분기만 관찰하며, 테스트가 데이터 손실, 권한 또는 가용성 위험을 확대하면 중단하세요.
잘못되었거나 비어 있거나 다른 마운트에 가려진 마운트와 올바르게 마운트되었지만 초기화 또는 액세스에 실패한 경우를 구분하기
변경하기 전에 환경을 기록하세요. 소프트웨어 및 펌웨어 버전, 장치 식별자, 마운트 또는 네트워크 경로, 여유 공간, 권한, 관찰 가능한 증상을 기록합니다. 기준선에는 컨테이너를 다시 생성했을 때 사용자, 라이브러리, 데이터베이스 또는 이전 구성이 전혀 없는 상태가 재현되도록 충분한 세부 정보가 포함되어야 합니다.
첫 번째 후보는 잘못되었거나 비어 있거나 다른 마운트에 가려진 마운트입니다. 두 번째는 올바르게 마운트되었지만 초기화 또는 액세스에 실패한 경우입니다. 현재의 Docker 바인드 마운트 동작은 테스트에 사용되는 메커니즘 또는 명령 경계를 정의하지만, 이 특정 홈 서버에서 직접 관찰한 내용을 대신하지는 않습니다.
판별 테스트를 실행하기 전에 통과 조건과 중단 조건을 작성하세요. 통과는 한 분기에서 예측한 증거를 바꾸면서 관련 없는 서비스는 변경하지 않아야 하며, 실패 시에는 추측에 기반한 수정 작업을 연쇄적으로 실행하지 말고 시스템을 저장된 상태로 되돌려야 합니다.
통제된 판별 테스트 하나 실행하기
다음 판별 테스트를 사용하세요. Compose 구성을 점검하고 마운트를 확인한 다음, 호스트 경로의 콘텐츠를 비교하고, 폐기 가능한 정상 디렉터리를 대상으로 이미지를 실행합니다. 결과가 변경된 변수에 따른 것인지 확인할 수 있도록 작업 부하, 클라이언트, 경로, 파일 집합 및 타이밍을 일정하게 유지하세요.
컨테이너 볼륨 검사를 사용하여 두 분기를 실제로 구분할 수 있는 필드를 선택한 다음, 타임스탬프, 종료 상태, 오류 텍스트, 장치 또는 스냅샷 식별자, 지연 시간, 전송된 바이트, 권한 및 복구 상태를 캡처하세요. 정체성, 내구성 또는 애플리케이션 상태가 테스트 대상이라면 명령이 정상적으로 종료된 것만으로는 충분하지 않습니다.
첫 번째 실행이 원래 조건의 일부인 재시작, 재연결, 재마운트 또는 콜드 캐시 이후라면 테스트를 한 번 반복하세요. 첫 실행이 파괴적이거나 환경을 복원할 수 없다면 중단하고 대신 폐기 가능한 복사본에서 재현하세요.
docker compose config
docker inspect app --format "{{json .Mounts}}"
증거가 어느 분기를 뒷받침하는지 해석하기
통과: 컨테이너가 문서화된 경로에서 예상 파일을 확인하거나, 구체적인 초기화 및 권한 오류를 로그에 기록합니다. 결론이 보편적인 주장으로 변하지 않도록 통과한 정확한 버전, 식별자 및 작업 부하를 기록하세요.
실패: 호스트에는 파일이 있지만 다른 마운트 대상에 가려져 있거나, 애플리케이션이 다른 내부 경로에 기록합니다. 네트워크, 메모리, 권한 또는 소스 일관성이 두 분기에 모두 영향을 줄 수 있으므로 실패가 자동으로 반대 분기를 입증하는 것은 아닙니다. 확대하기 전에 이러한 공통 종속 요소를 격리하세요.
예외 또는 모호한 결과: 컨테이너를 중지하고 소유권을 변경하거나 데이터를 이동하기 전에 의심되는 두 경로를 모두 복사하세요. 로그를 보존하고 복구 가능한 복사본이 생길 때까지 복구, 정리, 삭제, 재파티션 또는 재귀적 소유권 변경 명령을 실행하지 마세요.
일치하는 조치를 적용하고 원래 장애 재현하기
관찰된 분기에 맞는 조치를 적용한 다음, 축소된 대체 조건이 아니라 원래 조건을 다시 재현하세요. 컨테이너가 문서화된 경로에서 예상 파일을 확인하거나, 구체적인 초기화 및 권한 오류를 기록하는 상태가 두 주기 또는 관련된 재부팅, 절전, 중단 또는 부하 전환 동안 유지될 때만 이 판단이 유효합니다.
컨테이너 사용자 ID를 사용하여 가장 가까운 종속 워크플로를 확인하되, 원래 트리거는 변경하지 마세요. 관련 없는 데이터 세트, 공유, 컨테이너, 사용자 및 복구 지점은 이전의 액세스와 타이밍을 유지해야 합니다.
중단 경계는 명확합니다. 호스트에는 파일이 있지만 다른 마운트 대상에 가려져 있거나, 애플리케이션이 다른 내부 경로에 기록한다면 마지막으로 검증된 구성으로 돌아가 증거를 보존하고, 해당 분기가 반복해서 재현될 때만 더 심층적인 플랫폼 또는 하드웨어 테스트로 확대하세요.
대상 결과가 유지된 후에는 이를 읽기 전용 컨테이너 루트와 비교하여 수정 사항이 인접 서비스로 위험을 옮기지 않는지 확인하세요. 새로운 백업, 식별자, 시간 초과 또는 가용성 문제가 발생한 성공적인 대상 테스트는 여전히 실패한 변경입니다.
FAQ
비어 있는 컨테이너 데이터 진단과 관련해 남는 검색 주제는 대개 비어 있는 바인드 마운트가 이미지 파일을 가릴 수 있는지, 배포 후 상대 경로가 변경되는 이유, 디렉터리에 즉시 chown을 실행해야 하는지입니다. 아래 답변은 이러한 예외 사례를 주요 판단과 분리합니다.
통과 경계는 바뀌지 않습니다. 컨테이너가 문서화된 경로에서 예상 파일을 확인하거나, 구체적인 초기화 및 권한 오류를 기록해야 합니다. 후속 조건이 파일 시스템, 식별자, 네트워크 경로 또는 애플리케이션 버전을 변경한다면, 해당 변경의 영향을 받은 판별 테스트만 반복하세요.
호스트에는 파일이 있지만 다른 마운트 대상에 가려져 있거나, 애플리케이션이 다른 내부 경로에 기록한다면 실험 범위를 넓히지 마세요. 이 시점에는 컨테이너를 중지하고 소유권을 변경하거나 데이터를 이동하기 전에 의심되는 두 경로를 모두 복사하세요. 플랫폼, 스토리지 또는 하드웨어 담당자에게 확대하기 전에 증거를 보존해야 합니다.
비어 있는 바인드 마운트가 이미지 파일을 가릴 수 있나요?
예. 내용이 채워진 이미지 디렉터리 위에 마운트하면 해당 마운트가 유지되는 동안 이미지 콘텐츠가 가려집니다.
배포 후 상대 경로가 변경되는 이유는 무엇인가요?
Compose는 프로젝트 컨텍스트를 기준으로 상대 경로를 확인하므로, 작업 디렉터리나 관리 도구가 다르면 다른 위치를 가리킬 수 있습니다.
디렉터리에 즉시 chown을 실행해야 하나요?
아니요. 먼저 의도한 경로인지 확인하고 현재 소유권을 기록하여, 권한 수정으로 다른 데이터가 손상되지 않도록 하세요.
동일한 작업 부하에서 증거가 잘못되었거나 비어 있거나 다른 마운트에 가려진 마운트 또는 올바르게 마운트되었지만 초기화 또는 액세스에 실패한 경우 중 하나를 일관되게 가리키고, 일치하는 조치가 원래 증상을 제거하면서 두 번째 문제를 만들지 않을 때 진단이 완료됩니다. 어느 분기도 반복해서 재현되지 않는다면 로그와 저장된 상태를 그대로 유지하세요. 불확실성은 더 많은 수정 작업을 쌓을 이유가 아니라 확대할 이유입니다.
지원 및 팁
더 읽어보기

이름이 변경된 데이터 세트와 안정적인 파일 핸들을 위한 NFS 마이그레이션 체크리스트
스토리지 식별자가 변경되면 파일 핸들이 바뀔 수 있다고 가정하세요. 클라이언트를 일시 중지하고, 내보내기를 의도적으로 전환한 후 다시 마운트하고, 열린 파일과 새 파일을 확인하세요.

Windows, macOS 및 Linux용 SMB 클라이언트 문제 해결 가이드
검색, 자격 증명, 정책 및 스토리지 오류가 서로 뒤섞이지 않도록 각 클라이언트에서 동일한 서버, 계정, 공유 및 파일 작업을 사용하세요.

앱, 데이터베이스 및 백업을 위한 홈 서버 비밀 정보 교체 체크리스트
로테이션을 의존성 마이그레이션으로 간주하세요. 모든 사용처를 파악하고, 가능한 경우 자격 증명을 중복으로 적용하며, 새 값을 확인한 다음 기존 값을 폐기하고 복구 절차를 테스트하세요.

