더북(TheBook)

이 애플리케이션은 앞서 본 애플리케이션에 비해 비교적 유용하다. 실행하기 전에 빌드에 사용된 이미지와 최종적으로 빌드된 이미지의 크기를 잠시 비교해 보자.

실습 빌드에 사용된 Go 빌드 도구 이미지와 빌드된 Go 애플리케이션 이미지의 크기를 비교해 보자.

docker image ls -f reference=diamol/golang -f reference=image-gallery

대부분의 도커 명령어는 출력 내용을 필터링하는 기능을 제공한다. docker image ls 명령어에도 인자로 지정된 diamol/golang 혹은 image-gallery를 태그에 포함하는 이미지만을 출력하도록 필터링하는 기능이 있다. 이 명령을 실행해 보면 기반 이미지를 잘 선택하는 것이 얼마나 중요한지 깨닫게 될 것이다.

REPOSITORY        TAG       IMAGE ID        CREATED          SIZE
image-gallery     latest    b6aaf615a3a8    20 minutes ago   25.5MB
diamol/golang     latest    e0b7365f308e    2  hours   ago   803MB

리눅스 환경을 기준으로, Go 빌드 도구를 포함하는 이미지의 크기는 800MB를 넘어선다. 그러나 실제 Go 애플리케이션 이미지의 크기는 25MB에 불과하다. 다시 강조하지만, 이 크기는 논리적 크기이므로 이미지 간에 많은 수의 레이어가 공유된다. 중요한 부분은 실제 이미지 크기가 아니라, 최종 애플리케이션 이미지에 모든 것이 들어가지 않는다는 점이다. Go 애플리케이션은 실행 시에 별도의 Go 빌드 도구가 필요 없다. 그러므로 애플리케이션 이미지의 크기를 최소한으로 유지하며 거의 750MB에 달하는 용량을 줄일 수 있는 것이다. 이는 공격이 가능한 부분 자체를 줄일 수 있다는 점에서 큰 장점이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.