
docker build란 Dockerfile을 기반으로 하나의 Docker 이미지(image)를 만드는 명령어이다. 작성한 Dockerfile에 따라 이미지를 만들고, 그 이미지 안에는 작성자가 지정한 프로그램, 파일, 환경 설정이 모두 포함된다. 쉽게 말해 Docker 이미지를 음식이라고 생각한다면 Dockerfile은 음식의 레시피가 되는 셈이다.
docker build -t [이미지이름:태그] [Dockerfile이 있는 경로]
# ex
docker build -t hello-alpine .
# -t hello-alpine : 이 빌드된 이미지의 이름을 hello-alpine으로 지정
# . : 현재 디렉토리에 있는 Dockerfile을 사용하겠다는 의미
FROM ubuntu
WORKDIR /app
COPY hello.txt .
CMD ["cat", "hello.txt"]
docker build를 실행하면:
1. Ubuntu 이미지를 베이스로 설정
2. /app 디렉토리를 만들고 작업 디렉토리로 설정
3. hello.txt 파일을 컨테이너 내부 /app으로 복사
4. 실행 명령을 설정(CMD는 실행 시점에 사용됨)
위 모든 과정을 하나의 이미지로 만들어서 저장하는 것이 바로 docker build이다.
이미지가 만들어지면 docker images 명령으로 목록 확인이 가능하며, docker run IMG_NAME으로 언제든 실행이 가능하다. DockerHub을 통해 다른 사람과 공유를 할 수 도 있다.
캐시(Cache) 활용 : Docker는 Build할 때 이전에 실행한 단계들을 캐시에 저장한다. 변경이 없으면 같은 명령어는 다시 실행하지 않고 캐시를 사용해 빠르게 빌드한다.
캐시 활용의 예시
docker build -t my-hello .
# → Dockerfile 보고 이미지 생성
docker run my-hello
# → 이미지 기반으로 컨테이너 실행
Docker 처음 설치하고 진행했던 Docker run hello-world를 실행했을 때 나오는 문구를 그대로 출력하는 이미지를 생성해볼 것이다.
먼저 Dockerfile과 build를 위한 작업 디렉토리를 생성해준다. 디렉토리 생성 이후 Dockerfile을 생성해 문구를 작성해준다.

FROM ubuntu
WORKDIR /app
COPY hello.txt .
CMD ["cat", "hello-world.txt"]
docker build . -t hello-world1


두 번째로 진행할 방식은 Base image를 우분투가 아닌 기본 scratch로 진행할 예정이다. hello.c c파일을 만들어서 gcc로 컴파일한 후 실행 파일을 바로 실행시켜 문구를 출력할 예정이다.
먼저 hello.c를 작성해준다.(디렉토리는 이전 작업 디렉토리와 동일하다.)

gcc -static -o hello hello.c


