[docker]도커 이미지와 레이어

신동혁·2023년 5월 16일
0

도커

목록 보기
4/5

이미지

도커 이미지란 읽기 전용의 파일로 스냅샷과 비슷한 역할을 한다. 즉, 어플리케이션을 실행하는데 독립적인 환경을 제공하기 위해 필요한 데이터를 포함한 파일을 의미한다.

이미지의 정확한 이름

도커 허브에서 이미지를 풀 받을 때 nginx:latest 이런 식의 이미지명을 많이 사용한다. 하지만 사실 이런 이미지의 정확한 이름은 다음과 같다.

docker.io/myname/nginx:latest

이미지의 이름 구성을 정의하면 다음과 같다.

도커 레지스트리명 / 네임스페이스 / 이미지명:태그

이때 도커 레지스트리란 도커 이미지가 저장되어 있는 저장소를 의미하는데, 기본적으로 도커 클라이언트의 도커 레지스트리 설정이 docker.io, 즉 도커 허브라는 사이트로 지정되어 있다.

네임스페이스는 동일한 시스템에서 별개의 격리되고 독립된 환경을 가상화하는 기술을 의미한다. 즉, 도커 허브같은 도커 레지스트리에서 특정한 자신만의 구역을 네임스페이스라는 단위로 만들 수 있는 것이다.

레이어

도커 이미지는 레이어라는 개념을 사용해 구성된다.

위 그림은 압축 파일과 이미지를 비교한 그림이다. 도커의 이미지는 도커 컨테이너를 만들기 위한 정보를 가진 압축 파일로 비유할 수 있다. 하지만 일반적인 압축 파일과 다른 점은 위와 같이 독립적인 공간을 지닌 압축 파일들과 달리 도커 이미지는 같은 내용을 가진 도커 이미지들끼리는 해당 내용을 공유할 수 있는 구조를 가졌다. 이를 통해 용량을 효율적으로 사용할 수 있다.

각 레이어는 독립적으로 저장된다. 또한 각 레이어는 읽기전용으로 바뀌지 않는 속성을 지닌다. 이때 이미지를 컨테이너로 실행 시 이미지에 해당한 레이어들이 마운트되고 마지막으로 맨 위에 컨테이너 전용 쓰기 레이어가 추가되어 실행된다.

이때 도커 이미지와 레이어를 확인하는 명령어는 다음과 같다.

docker images -a

이 때 이미지는 원래 뜨던 형태로 뜬다. 하지만 레이어들은 repository나 tag가 none으로 표시된 채로 표시된다.

ex)

만약 컨테이너로 실행하고 컨테이너에서 어떤 작업을 할 경우 해당 내용은 모두 맨 위에 존재하는
컨테이너 전용 쓰기 레이어에 기록되는 것이다. 그래서 만약 해당 작업을 포함한 새로운 이미지를
만들어 내고 싶다면 아래 명령어를 이용한다. 그러면 맨 위 레이어도 하나의 레이어로 저장되어 새로운 이미지가 생성된다.

docker commit 컨테이너id 새롭게만들이미지명:태그
profile
개발취준생

0개의 댓글