이전의 글에서 docker 컨테이너를 만들기 위해 docker hub에 있는 이미지들을 활용하였다.
그럼 Docker Image는 항상 Docker hub에서 내려 받아야 하는 걸까??
내가 직접 내가 필요한 이미지를 만들어서 사용할 수는 없을까??
본 글에서는 Docker Image를 만드는 법을 설명한다.
도커 이미지를 만들기 위해서는 먼저 도커 파일(Dockerfile)을 작성해야 한다.
Dockerfile??
Dockerfile은 이미지를 만들기 위한 명세서다.
Dockerfile을 이용해 간단한 메세지를 출력하는 이미지를 만들어보자
# Dockerfile
# 베이스 이미지 명시
FROM alpine
# 컨테이너 시작시 실행 될 명령어를 명시해줍니다.
CMD [ "echo" ,"hello world" ]
해당 Dockerfile을 풀이하면 다음과 같다
-
`alpine`을 베이스 이미지로 사용하고 `echo hello world`를 실행하는 이미지를 만들어라
해당 파일이 저장된 위치에서 아래 커맨드를 실행한다.
# 현재 디렉토리에서 docker build를 실행합니다.
docker build .
현재 폴더에 있는 Dockerfile을 이용해 이미지를 빌드합니다.
docker images
를 이용하면 생성된(+다운로드 된) 이미지들을 확인할 수 있습니다.
%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22%22%20style%3D%22shape%3Dimage%3BverticalLabelPosition%3Dbottom%3BlabelBackgroundColor%3D%23ffffff%3BverticalAlign%3Dtop%3Baspect%3Dfixed%3BimageAspect%3D0%3Bimage%3Dhttps%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpHQsb%2FbtqD2FXLMtq%2FkB8gkF36DSJAgC4RIX4GaK%2Fimg.png%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22150%22%20y%3D%22190%22%20width%3D%22503.88%22%20height%3D%22250%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E
현재 이미지가 생성됐지만 <REPOSITORY>와 <TAG>가 비어있습니다.
이러면 이미지를 사용할 때 Image ID를 이용해야 할텐데 너무 불편하겠죠.
docker build --tag <imgname>:<tag> .
이렇게 이미지 이름: 버전 형식으로 이미지를 빌드하면 이름과 버전을 사용할 수 있습니다.