해당 포스트 내용은 엘튼 스톤맨의 "도커 교과서"를 읽고 이해한 내용을 바탕으로 작성하였습니다.
Dockerfile은 도커 이미지를 생성하는데 사용되는 파일이다. 도커 파일은 Docker 엔진이 실행할 명령형 인터페이스의 명령어 목록으로, 도커 이미지는 도커 파일에 작성된 지시사항을 따라 자동으로 도커 이미지를 생성한다. 이때 도커파일에 작성된 하나의 명령어는 생성되는 도커 이미지의 하나의 이미지 레이어와 매핑된다.
도커 이미지는 실행 가능한 애플리케이션의 소스코드, 라이브러리, 의존성 및 환경 등이 패키징되있는 파일이다. 도커 이미지가 실행되면 컨테이너의 인스턴스가 되어 해당 이미지의 애플리케이션이 실행되게 된다. 이러한 도커 이미지는 도커 엔진의 캐시에 물리적으로 저장되어 여러 이미지와 도커 컨테이너에서 공유된다.
도커 이미지는 여러 이미지 레이어의 계층 구조로 형성되어 있다. 도커 이미지와 컨테이너는 같은 이미지 레이어는 공유하여 사용한다. 이처럼 공유하는 이미지를 함께 사용하기 때문에 디스크의 용량을 효율적으로 사용하여 더욱 많은 컨테이너를 생성할 수 있지만, 반대로 공유되는 이미지가 수정된다면 다른 컨테이너와 이미지에도 영향을 미칠 수 있다. 따라서 도커는 이미지 레이어를 읽기 전용으로 먼들어 이러한 문제를 방지하고 있다.
docker image build --tag <이미지 명> <Dockerfile 및 이미지에 포함시킬 파일 위치 경로>
docker image build --tag jay .
도커 이미지는 도커 파일을 사용하여 빌드할 수 있다. 이미지를 빌드하려면 생성할 이미지의 이름, 패키징에 필요한 파일(도커파일 혹은 이미지에 포함되는 파일 위치 경로)의 경로를 지정해주어야 한다.
위의 예시의 경우 현재 디렉토리에 존재하는 Dockerfile을 사용하여 jay라는 도커 이미지를 빌드하라는 명령어이다.
docker image pull <사용할 이미지 명>
docker image pull jay
jay라는 이름을 가진 도커 이미지를 도커 허브에서 다운로드 받는 명령어이다. 도커 이미지는 여러개의 이미지 레이어로 구성되어 있기 때문에 여러 이미지 레이어 중 도커 엔진 캐시에 존재하지 않는 이미지 레이어만 다운로드 받게된다. 이렇게 여러 이미지 레이어로 구성된 도커 이미지는 도커가 파일들을 조립하여 내부 파일 시스템을 구성하게 된다.