Park, Geon (re-st)

도커 저장해 다른 서버로 옮길 때 특정 파일이 기가바이트 단위로 측정되는 경우

[howto] 1 min read

🐞 문제 상황

도커 이미지 내의 특정 파일(/A) 크기가 4GB로 불어있음.

🖥️ 환경 및 전송 과정

  1. 빌드: 서버 A에서 도커 이미지 빌드.
  2. 압축/저장: docker save [이미지] \(\rightarrow\) gzip으로 압축.
  3. 전송: rsync -az를 사용해 압축 파일을 서버 B로 전송.
  4. 로드: 서버 B에서 gunzip < $tarball_abspath | docker load 명령어로 이미지 로드.

💡 해결 과정

  • 4.0G 중 nonzero byte가 있는지 확인: cmp -l /dev/zero /A | head -n 1
  • 압축/전송 과정 중 파일 손상으로 추정.
    • 원본 서버에서 이미지를 다시 docker savegzip 하여 전송 작업을 반복.
    • 해결 X
  • 첫 32kb 이후에 바이트 없음.
    • tail -c +32769 /A | cmp -l - /dev/zero | head -n 1
  • 또한, 원본 도커 이미지와 nonzero byte 개수 같음.
    • cmp -l /A /dev/zero | wc -l을 양 도커에서 비교
  • (미완) 그러면 inode 문제인데. 왜 이렇게 됐지?
    • bitmap 파일의 NULL TERMINATOR를 덮어씌우는 식으로 실수

<< Previous Post

|

Next Post >>

← 뒤로