ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쉽게 설명하는 도커 이미지 레이어
    카테고리 없음 2026. 10. 20. 01:23

    안녕하세요, 쉽게 배우는 시리즈입니다.

    오늘 다룰 내용은 도커 이미지 레이어 입니다.

    어려운 용어는 잠시 내려놓고, 색칠공부 한 권으로 이해해 보겠습니다.

    먼저 30초 정도의 영상부터 보고 가실게요.

     

    영상 잘 보셨나요? 이 비유를 도커에 연결하면 아래와 같습니다.

    색칠공부 도커
    테두리, 무늬, 바구니를 그린 종이 한장 이미지 레이어
    겹쳐서 완성된 밑그림 이미지 (읽기 전용)
    여러 사람이 빌려 보는 도서관 책 여러 컨테이너가 공유하는 이미지
    맨 위에 덧댄 투명 종이 컨테이너의 쓰기 가능한 레이어
    투명 종이를 걷어내기 컨테이너 삭제

     

     

    이제 실습을 통해 확인해보겠습니다.

    간단한 nginx를 pull 해보겠습니다.

    docker pull nginx
    

    bbeda…, 633a13cb.. 이런것들이 레이어입니다. 각각 테두리, 무늬, 바구니 같은 선들이고, 이들이 모여 nginx이미지(열기구 밑그림)를 만들었습니다.

     

    레이어는 어떤 명령어로 구성되었을지 알아보겠습니다.

    docker history nginx
    

    18줄이 나옵니다. 그런데 docker pull에서 받은건 7개밖에 안됐는데 이상합니다. 왜 18개의 명령어가 전부 pull 되지 않은 걸까요?

    이유는 4번째 열의 SIZE를 보시면 알 수 있습니다. 0B인 줄은 파일을 바꾸지 않는 명령어라서 레이어가 생기지 않습니다. 대신 환경변수나 실행 명령어 같은 정보가 이미지의 config에 저장되고, 컨테이너를 실행할 때 사용합니다.

     

    이제 pull 받은 이미지로 컨테이너를 실행해보겠습니다.

    docker run -d --name test nginx
    

    그리고 투명 종이 위에 “안녕”을 써보겠습니다.

    docker exec test sh -c "echo 안녕 > /hello.txt"
    

    그리고 잘 써졌는지 확인 가능합니다.

    이후 투명 종이에 써져 있는 것을 확인하기 위해 다음 명령어를 입력합니다.

    docker diff test
    

    /hello.txt만 추가 될 줄 알았는데 이미 많은 파일들이 추가되고 수정되어있었습니다. 왜 그럴까요? 저는 다른 작업 안하고 그냥 안녕만 썼는데..

    그 이유는 config에 저장된 ENTRYPOINT(컨테이너가 시작될 때 실행할 명령어) 때문입니다.

     

    /docker-entrypoint.sh 스크립트가 실행되면 많은 파일들이 추가되고 수정됩니다. 색칠공부로 치면, 밑그림 책에 “펼치면 바구니를 갈색으로 칠하세요” 라는 지시문이 인쇄되어 있고, 책을 펼친 사람이 그 지시대로 투명종이에 칠한 셈입니다.

     

    이제 마지막으로 투명 종이를 한번 걷어내 보겠습니다. 컨테이너를 삭제하고 같은 이미지로 실행해 볼게요

    docker rm -f test
    docker run -d --name test nginx
    docker exec test cat /hello.txt
    

    안녕이 사라졌습니다. 투명 종이를 걷어냈으니, 새로 올린 종이에는 아무것도 없는 거죠.

     

    그럼 다시 docker diff를 실행해보겠습니다.

    docker diff test
    

     

    이번엔 /hello.txt는 없고, default.conf 같은 파일들만 다시 나타납니다. 밑그림 책에 인쇄된 지시문(ENTRYPOINT)은 그대로라서, 새 종이를 올릴 때마다 같은 지시대로 칠해집니다.

     

    정리

    • 이미지는 여러 레이어를 겹친 밑그림이고, 여러 컨테이너가 함께 쓰기 때문에 읽기 전용입니다.
    • 컨테이너는 그 위에 투명 종이(쓰기 레이어)를 덧대고 색칠하는 것입니다.
    • 컨테이너를 삭제하면 투명 종이만 사라지고, 밑그림은 그대로 남습니다.

    그런데 여기서 한 가지 문제가 생깁니다. 컨테이너를 지우면 그 안에 저장한 데이터도 같이 사라진다는 거에요.

    데이터베이스처럼 꼭 남겨야 하는 데이터는 어떻게 해야할까요? 다음 편에서는 투명 종이 바깥에 데이터를 보관하는 방법, 도커 스토리지를 다뤄보겠습니다.

Designed by Tistory.