도커 이미지는 컨테이너를 생성하는 데 필요한 파일 시스템과 애플리케이션 실행 환경을 포함하는 패키지입니다. 이 이미지는 애플리케이션, 라이브러리, 환경설정 파일 등이 포함되어 있어서 다른 시스템에서 동일한 환경을 실행할 수 있게 해줍니다. 도커 이미지는 읽기 전용으로, 실제로 애플리케이션을 실행하려면 이 이미지를 기반으로 컨테이너를 생성합니다.
Dockerfile은 도커 이미지를 만들기 위한 설계도입니다. Dockerfile에 작성된 명령어들을 하나씩 실행하면서 최종적인 이미지를 생성하게 됩니다. 이 파일은 한 줄 한 줄이 도커 이미지를 만드는 데 필요한 명령어로 구성됩니다. 예를 들어, 어떤 기반 이미지를 사용할지, 애플리케이션을 어떻게 설정할지 등이 담겨 있습니다.
Dockerfile의 기본적인 구조는 아래와 같습니다.
# 베이스 이미지 설정
FROM <이미지명>
# 메타데이터 설정
LABEL <키>=<값>
# 이미지에 필요한 파일 복사
COPY <소스> <대상>
# 명령어 실행
RUN <명령어>
# 컨테이너 실행 시 실행할 명령어 설정
CMD ["실행할", "명령어"]
각 명령어는 다음과 같은 역할을 합니다.
FROM: 사용하고자 하는 베이스 이미지를 설정합니다.LABEL: 이미지를 설명하는 메타데이터를 추가합니다.COPY: 로컬 파일을 도커 이미지에 복사합니다.RUN: 도커 이미지 안에서 명령어를 실행합니다.CMD: 컨테이너가 시작될 때 실행할 명령어를 설정합니다.가장 간단한 형태의Dockerfile예제를 통해 도커 이미지 만들기를 해보겠습니다.
# 1. 기본 이미지를 설정
FROM ubuntu:20.04
# 2. 시스템 패키지 업데이트 및 curl 설치
RUN apt-get update && apt-get install -y curl
# 3. 도커 이미지에서 실행할 기본 명령어 설정
CMD ["ehco", "Hello from Docker!"]
ubuntu:20.04 이미지를 기반으로 합니다.이 Dockerfile을 작성한 후, 이미지 생성 명령어를 실행할 수 있습니다.

위의 Dockerfile을 작성했다면, 이제 이미지를 빌드 해야 합니다.
아래 명령어를 이용하여 이미지를 생성할 수 있습니다.
docker build -t my-ubuntu-image .
이 명령어는 현재 디렉터리(.)에서 Dockerfile을 찾고, my-ubuntu-image라는 이름으로 이미지를 빌드합니다.
이미지 빌드가 완료되면, 아래 명령어로 생성된 이미지를 확인 할 수 있습니다.
docker images

이 명령어를 실행하면, 빌드한 이미지 목록이 출력됩니다. 만약 my-ubuntu-image 라는 이미지가 목록에 있다면 성공적으로 이미지가 생성된 것입니다.
이제 생성된 이미지를 기반으로 컨테이너를 실행할 수 있습니다.
아래 명령어를 사용하면 ehco 명령어가 실행되고, Hello from Dokcer! 메시지가 출력 됩니다.
docker run my-ubuntu-image

Dockerfile을 작성할 때 이미지 크기와 빌드 속도를 최적화하는 것도 중요합니다. 예를 들어, 캐시 활용을 최적화하거나, 여러 RUN 명령어를 하나로 합치는 등의 방식으로 더 작은 이미지를 만들 수 있습니다.
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y curl && apt-get clean
CMD ["echo", "Hello from Docker!"]
이 예제는 apt-get clean을 통해 불필요한 캐시를 제거하여 이미지 크기를 줄이는 방법입니다.