컨텐츠 내 위젯


도커 이미지의 이해를 위한 튜토리얼(1 / 6) 프로그래밍 상식

본 글은 https://qiita.com/zembutsu/items/24558f9d0d254e33088f 의 번역본 이며, 글 내용에 대한 권리는 원작자에게 있습니다.

1) 요약 - 스스로 "나에요" hello-world 이미지를 빌드.

이 튜토리얼은 hello-world 이미지를 스스로 빌드하는 예를 들겠습니다. 코딩 하면서 도커 이미지의 구성 및 성질의 이해를 더해갑니다. 또 효과적인 도커 이미지의 작성 및 Dockerfile의 활용을 목표로 하기 위한 기초인거 외에 (주로 개발자에게) 멀티스테이지·빌드를 배우겠습니다.

포인트는, 도커 이미지(image) 라고 하면, 도커 콘텐츠의 실행에 중요한 개념 으로써 패키지 즉, 파일이나 메타정보의 집합체 라는 것 입니다. 가상머신 이미지 처럼 실행하는 주체로써 한 파일로 구성된 것은 아닙니다.

그리고 Docker 이미지를 구성하는것은 추상적인 이미지 레이어의 모음입니다. 레이어라고 하면 [step - 층]의 의미이고, 도커는 복수의 레이어 시스템을 하나로 흡수합니다. 일반적으로 도커 이미지는 복수의 이미지 · 레이어로 구성되어 있습니다. 또한, 이미지 · 레이어는 읽기전용으로써 레이어간에 친자의존관계를 지니고 있습니다. (역자 주 - 읽기 전용이며 위에서 아래로만 흐르는 일방적인 포함관계를 의미)


통상, 도커의 이미지를 자동구축 가능하게끔 설정하는것이 도커파일이라고 부르는 설정 파일 이며, 이 파일안에서 이미지를 구성하는 명령을 적습니다. 이 명령 하나하나가 중요한 개념상 이미지 · 레이어에 상응합니다.

더욱이, 커맨드의 실행환경은 도커 CE 19.03, 호스트 OS는 리눅스(amd64 환경), 동시에 스토리지 드라이버는 디폴트 (overlay2) 을 설정했습니다.

※ 이 표현으로 이해가 안가시는 부분이 있으시다면, 지적 부탁드립니다.

(※ 역자 주 - 원문은 친자관계로 1:1 상속관계를 의미합니다 편의성을 위해 앞으로는 상속관계로 번역하겠습니다.)


1) 튜토리얼

1. 도커 이미지와 이미지 · 레이어

도커 이미지라는건, 상속관계를 가져, 복수의 이미지 레이어에 의해서 구성되어 있습니다. 이미지 · 레이어는 읽기전용 입니다. 도커는 복수의 이미지 · 레이어는 포함하여 파일이나 디렉토리 정보를 하나로 통합하는 기술을 쓰고 있습니다.





이 이미지 · 레이어의 안에는 도커 컨테이너의 실행에 필요한 리눅스 파일시스템과 메타정보를 포함합니다. 리눅스 파일시스템이라 하면, "/" 디렉토리 이하의 "/ect,/bin,/sbin,/usr" 등의 디렉토리 층계에 미치는 파일입니다. 
도커에서는 컨테이너로써 활동 시키고 싶은 어플리케이션이 필요합니다. 최소한의 어플을 도커 이미지의 안에 넣을 수 있습니다. (정확히는 이미지 · 레이어의 안에 어플리케이션 시스템에 집어넣을 수 있습니다.)

또한, 하나하나의 이미지 · 레이어에는 상속관계를 가지고 있습니다. 보다 상위에 있는 이미지 · 레이어 부터는, 부모로 되어 있는 이미지 · 레이어의 위의 파일시스템을 참조가 가능합니다. 즉, 도커 이미지를 다운로드 하면, 그 이미지가 복수의 이미지 · 레이어로 구성 되어 있다 하더래도, 그것을 의식하지 않고도 이용 가능합니다.


더욱이, 그 어플리케이션을 움직이게 하기 위해서 필요한 디폴트커맨드 라든지 매개변수(역자 - 원문은 인수)의 지정, 그 외에 공개할 포트번호의 정보, 볼륨영역의 정보가 있습니다. 이것들을 메타정보로 하여, 동일하게 도커 이미지 · 레이어 의 안에 넣을 수 있습니다.







이렇듯이 도커 이미지는[이미지] 라고 하는 명찰이 붙어 있습니다. 그러나 가상머신용 디스크이미지이며, OS의 템플릿을 가리키는 이미지는 전부 용법 개념이 서로 다르기 때문에 주의가 필요합니다.

통상 뭔가 도커 이미지를 가리킬 때에는 그 이미지의 최상위에 적재되어 있는 이미지 · 레이어 를 가리킵니다. (디폴트로는 latest 태그이라고 하는 태그를 가진 이미지·레이어) 그 이미지·레이어에게 상속관계를 가지는 레이어 가 있으면, 이미지의 취득시 등에, 자동적으로 한데 묶어 다운로드 하거나, 업로드를 하는게 가능합니다.

이후로는, 커맨드 실행을 해가면서 이미지와 이미지 · 레이어에 대해 확인하겠습니다.

덧글

댓글 입력 영역




(adsbygoogle = window.adsbygoogle || []).push({});