[docker] docker 볼륨 - Overlay2

업데이트:     Updated:

카테고리:

태그:

🎯목표

  • overlay2 드라이버 작동 방식
  • 이미지 및 컨테이너 레이어

overlay2 드라이버 작동 방식

image

  • lowerdir: 이미지 레이어
  • upperdir: 쓰기 가능 레이어 (컨테이너 레이어)
  • merged: overlay 파일 시스템 (Union 파일 시스템)

Note:

도커에서 이미지 레이어와 컨테이너 레이어가 동일한 파일을 포함하는 경우 컨테이너 레이어의 파일이 merged 파일 시스템에 포함됩니다.

Union 파일 시스템 특징

  • Union 파일 시스템은 여러 개의 파일 시스템을 하나로 합쳐서 마운트합니다.
  • Union 파일 시스템은 CoW입니다. 읽기 전용에 대한 쓰기 발생 시 복사본을 생성하여 수정합니다.

이미지 및 컨테이너 레이어

$ ls -l /var/lib/docker/overlay2
drwx--x--- 3 root root     47 Jan  9 12:33 102808657dfeea90ce1d592946d8f363897da5d7181be03d95c0e3e35704fe5e 
drwx--x--- 4 root root     72 Jan  9 12:33 1857fdd0a2ded75dc54c740fb66651283cf151bd50d4520471ae7535a2de940b 
drwx--x--- 4 root root     55 Jan  9 12:33 1dee93b0c934fbcb6d7119dcbe4cb4c55fe57587cddc77c54497f6c3e37b9e9b 
drwx--x--- 4 root root     72 Jan  9 12:33 b8bdb4998a0fb2be7b1261238bfadcf700336f3525da1b8e4035ab8947103271 
drwx--x--- 4 root root     72 Jan  9 12:36 b952dc00632ddb8f08ae8155e1d3b2123b87feec74c21db76f0d7956a33bcd76 
drwx--x--- 4 root root     72 Jan  9 12:33 76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499 
drwx------ 2 root root    210 Jan  9 12:53 l
  • 1: 디렉터리에는 각 이미지 레이어를 식별할 수 있는 식별자가 심볼릭 링크로 포함되어 있습니다. (이미지 레이어는 최대 128개의 하위 레이어를 지원합니다.)
$ ls /var/lib/docker/overlay2/102808657dfeea90ce1d592946d8f363897da5d7181be03d95c0e3e35704fe5e
diff  link

$ cat /var/lib/docker/overlay2/1857fdd0a2ded75dc54c740fb66651283cf151bd50d4520471ae7535a2de940b/link
K5CJMHXTO64J3BPLLERLLOY4SI

$ ls /var/lib/docker/overlay2/1857fdd0a2ded75dc54c740fb66651283cf151bd50d4520471ae7535a2de940b/diff
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  • 베이스 이미지 레이어에는 link 파일과 diff 디렉터리가 있습니다.
  • link: 각 레이어의 식별자 이름이 포함된 파일
  • diff: 각 레이어의 콘텐츠가 포함된 디렉터리
$ ls /var/lib/docker/overlay2/76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499
diff  link  lower  merged  work

$ cat /var/lib/docker/overlay2/76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499/lower
1/V5NFXDAPHXF6SXGC53WZV5S6F2

$ ls /var/lib/docker/overlay2/76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499/diff
etc  run  var
  • 베이스 이미지 레이어를 제외한 레이어에는 lower 파일과 diff, work 디렉터리가 포함되어 있습니다.
  • lower: 부모의 레이어 식별자를 나타냅니다.
  • diff: 해당 레이어의 콘텐츠가 포함된 디렉터리입니다.
  • work: OverlayFS 내부적으로 사용하는 디렉터리
  • 최상위 레이어에는 merged 디렉터리가 있습니다.
  • merged: 모든 하위 레이어와 자신의 통합 콘텐츠를 포함하는 디렉터리입니다.

마운트 확인

# 방법 1
$ mount | grep overlay
overlay on /var/lib/docker/overlay2/76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499/merged type overlay (rw,relatime,
lowerdir=/var/lib/docker/overlay2/l/CNAJXREZR2DBWFDJANIJZ5ZQJ7:/var/lib/docker/overlay2/l/2G4XVVPSPZGYGP3V6KN2EIDMQP:/var/lib/docker/overlay2/l/V5NFXDAPHXF6SXGC53WZV5S6F2:/var/lib/docker/overlay2/l/67VROYPCTKPMALRJZIB5NH72UL:/var/lib/docker/overlay2/l/CBWSK4KYN3VQGUAQKOT4SBOGTG:/var/lib/docker/overlay2/l/YDKI4F62HIXJWM3JC2JAW6ERXJ:/var/lib/docker/overlay2/l/5YPHV6STYICUY5QKXJPUJTT6MQ,
upperdir=/var/lib/docker/overlay2/76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499/diff,
workdir=/var/lib/docker/overlay2/76dea8a86706871d80b8ab74d92b63e5ab0a5412f2e2d11346923e7b705c7499/work

📌출처

Docker Docs


👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

docker 카테고리 내 다른 글 보러가기

댓글남기기