Docker 이미지 레이어란?
레이어(Layer)는 이미지를 구성하는 여러 개의 파일 시스템의 변경 사항을 포함하는 스냅 샷을 의미한다. Docker 이미지는 여러 레이어가 쌓여 있는 케이크의 층과 같다고 생각할 수 있다. 각 층(레이어)은 이미지에 추가된 변화나 업데이트를 담고 있다. 최종적으로 여러 개의 레이어가 쌓여서 하나의 완성된 Docker 이미지를 만들게 된다.
예시)
기본 레이어 : 예를 들어, 처음에는 Ubuntu 운영체제를 설치했다고 가정한다. 이 것이 첫 번째 레이어가 된다.
추가 레이어 : 이제, 이 Ubuntu 위에 nginx라는 웹 서버를 설치했다고 가정하면, 이 설치된 nginx는 새로운 레이어로 추가된다. 이에 이어서 필요한 여러 설정 파일을 추가하면, 각각의 설정 파일들 또한 하나의 레이어가 된다.
최종 이미지 : 이렇게 하나하나의 변화나 추가 작업이 각기 다른 레이어로 쌓이면서, 마지막에 완성된 것이 바로 Docker 이미지이다.
레이어가 필요한 이유?
Docker는 이미 만들어진 레이어를 재활용하는 방식으로 이미지를 효율적으로 다룬다. 예를 들어, Ubuntu와 nginx가 설치된 레이어가 있다면, 새로운 이미지에서 이들을 다시 설치하지 않고 기존에 존재하는 레이어를 재활용하는 방식을 통해 이미지 빌드나 배포 등의 작업을 보다 더 빠르게 처리한다.
레이어 저장소 확인해보기
docker inspect {이미지명 또는 ID}
inspect 명령어는 Docker에서 컨테이너나 이미지의 상세 정보를 JSON 형식으로 출력해주는 명령어이다. 이 명령어를 통해 Docker 객체(컨테이너, 이미지, 볼륨 등)의 상태, 설정, 리소스 사용량, 레이어 등 다야한 내부 정보를 확인할 수 있다.
따라서, 위 명령어를 실행해보면 하단에 RootFS 영역에 레이어가 hash 값으로 나열되어 있는 것을 확인할 수 있다.
또한 아래 docker 이미지 정보를 확인할 수 있는 명령어를 통해서 이미지의 저장소 및 레이어 저장소를 확인할 수 있다.
docker info {이미지명 또는 ID}
위 명령어를 실행해보면 Docker Root Dir에 Docker의 컨테이너와 이미지 데이터, 볼륨 등을 저장하는 기본 디렉토리 경로를 확인할 수 있다. 기본적으로 경로는 `/var/lib/docker`로 지정되어있다. 이 디렉토리는 Docker 엔진이 동작하면서 생성하는 모든 데이터와 메타데이를 관리하는 Docker의 핵심 디렉토리이다.
아래 명령어를 통해 Docker 기본 디렉토리로 이동하여, 해당 경로가 포함하는 디렉토리들을 확인해보면 overlay2라는 디렉토리가 있는데, 이 디렉토리가 Docker 이미지의 레이어와 컨테이너 파일 시스템을 저장하는 디렉토리이다.
# Docker 기본 디렉토리 경로로 이동
cd /var/lib/docke
# 폴더 내용 확인
ls
# Docker overlay2 경로로 이동
cd /var/lib/docker/overlay2
# 폴더 내용 확인
ls
overlay2의 내용을 확인해보면, 숫자와 문자로 이루어진 여러 디렉토리들이 보이는데, 이 것이 Docker 이미지와 컨테이너의 레이어를 나타낸다. 이 문자열들은 각 레이어의 고유한 ID로 사용된다.
'DevOps > Docker' 카테고리의 다른 글
Docker(6) - 볼륨 마운트 (0) | 2024.08.21 |
---|---|
Docker(5) - 환경 변수 (0) | 2024.08.21 |
Docker(3) - Docker 라이프사이클 및 유용한 명령어 (0) | 2024.08.20 |
Docker(2) - 도커를 위한 환경세팅 및 도커 레지스트리 (0) | 2024.08.20 |
Docker (1) - 컨테이너와 Docker 기초 개념 (0) | 2024.08.20 |