Dockerfile은 도커 이미지를 위한 설정 파일이며 컨테이너가 어떻게 행동해야 하는지에 대한 설정을 정의해주는 것이다.
베이스 이미지
도커 이미지는 여러개의 레이어로 되어 있는데, 그 중에 베이스 이미지는 그 이미지의 기반이 되는 부분으로 OS라고 생각하면 된다.
#Dockerfile
#베이스 이미지 명시
FROM baseImage
#추가적으로 필요한 파일들을 다운로드 받음
RUN command
#컨테이너 시작 시 실행될 명령어 명시
CMD ["executable"]
이미지 생성 시 기반이 되는 이미지 레이어
<이미지_이름>:<태그>
형식으로 작성
태그를 붙이지 않으면 자동적으로 가장 최신 것으로 다운로드 받는다
도커 이미지가 생성되기 전 수행할 쉘 명령어
컨테이너가 시작되었을 때 실행할 실행 파일 or 쉘 스크립트
해당 명령어는 DockerFile내 1회만 쓸 수 있음
먼저 도커 파일을 작성해준다.
FROM alpine
CMD ["echo", "hello"]
이 도커 파일로 이미지를 어떻게 생성할까?
도커 파일에 입력된 것들이 도커 클라이언트에 전달이 되서 도커 서버가 인식을 해야한다.
docker build <파일이_있는_디렉토리경로>
베이스이미지를 임시컨테이너에 넣어주고, 커맨드 넣어주고 임시 컨테이너를 토대로 새로운 이미지를 생성한다!
쬐금 더 자세하게 설명해보자면
38b6c59bd791
를 생성하고, alpine 이미지가 가지고 있는 파일 스냅샷을 하드 디스크에 추가한다.38b6c59bd791
로 이미지 b6235c018165
를 생성한다.정리해보자면 베이스 이미지에서 다른 종속성이나 커맨드를 추가할 때는 임시 컨테이너를 만들고 그 컨테이너를 토대로 새로운 이미지를 만든 후 임시 컨테이너는 지워준다.
docker build -t <나의_도커_아이디>/<저장소_or_프로젝트_이름>:<버전>