SW/Kubernetes, Docker

Docker 유틸리티 컨테이너란? Node 없이 npm init 하는 법

얇은생각 2025. 9. 21. 07:30
반응형

Docker의 숨겨진 무기: 유틸리티 컨테이너로 훨씬 편한 개발 라이프!

Docker, 다들 한 번쯤은 들어봤을 거예요. 대부분은 앱을 서버에 띄울 때 쓰는 걸로 알고 있죠. Node.js 서버, React 웹앱, 데이터베이스까지 다 dockerize해서 어디서든 돌릴 수 있게 해주는 게 기본 기능이니까요.

근데요, 이게 전부가 아니에요. 진짜 유용한 기능이 하나 더 숨어있는데, 이걸 아는 순간 Docker가 훨씬 친근하게 느껴질지도 몰라요.

전 그걸 유틸리티 컨테이너라고 부릅니다. 공식 이름은 아니고 그냥 제가 붙인 이름인데, 이 단어가 너무 잘 어울려서 자주 써요. 이 글을 끝까지 읽으면 왜 그런지 공감하실 거예요.

 

유틸리티 컨테이너? 그게 뭐야?

 

유틸리티 컨테이너? 그게 뭐야?

보통 Dockerfile 만들고, 애플리케이션 환경 설정하고, docker run으로 돌리는 게 일반적인 흐름이죠. 그런데 꼭 앱을 띄우는 용도가 아니어도 Docker를 쓸 수 있어요.

진짜 짧게, 한 번만 쓰고 끝내는 작업 있잖아요? 예를 들어서 새로운 프로젝트 만들 때, 포맷팅할 때, 빌드 도구 돌릴 때... 이런 것도 Docker가 도와줄 수 있다는 거예요.

유틸리티 컨테이너는 애플리케이션을 돌리는 게 목적이 아니라, 그냥 그때그때 필요한 개발 도구가 들어 있는 컨테이너라고 생각하면 돼요. Node.js, Python, PHP 같은 도구들 말이죠.

 

 

진짜 예시 하나 들어볼게요

저는 종종 새로운 프로젝트를 시작할 때 npm init으로 시작하거든요. 근데 Node.js가 시스템에 없으면 이게 안 되잖아요. 그럼 보통 Node를 설치해야 하죠.

근데 잠깐, 우리가 왜 Docker 쓰는 거였죠? 시스템에 이것저것 설치 안 해도 되니까 쓰는 거잖아요!

그래서 저는 이렇게 합니다. 그냥 아래 명령어 한 줄이면 끝이에요:

docker run -it --rm -v $(pwd):/app -w /app node:20 npm init

 

실제로 써보면... 진짜 감동입니다. 필요할 때마다 Node 환경을 바로 불러올 수 있고, 프로젝트 설정도 깔끔하게 끝나요. 시스템은 그대로 깨끗하고요.

 

꼭 Node만 되냐고요? 전혀요.

 

꼭 Node만 되냐고요? 전혀요.

PHP 쓰시는 분들은 Laravel 프로젝트 만들려면 Composer부터 이것저것 설치하셔야 하잖아요. 근데 그것도 Docker로 툭 하고 해버릴 수 있어요:

docker run --rm -v $(pwd):/app -w /app composer create-project laravel/laravel

 

Composer 깔 필요도 없고, 시스템에 아무것도 안 남습니다. 저는 이런 깔끔함에 진심으로 감동했어요.

 

 

왜 유틸리티 컨테이너에 빠지는 사람 많을까?

개발할 때 가끔 이런 거 있잖아요. "이거 한 번만 쓸 건데 굳이 설치해야 하나?" 싶은 순간. 그럴 때 Docker가 진짜 신의 한 수예요. 그냥 필요할 때 불러서 쓰고, 끝나면 휘리릭 사라지니까요.

그리고 실수로 뭘 망칠 걱정이 없어요. 뭔가 새로운 거 시도할 때 부담도 확 줄고요. 저도 Python 포맷터 실험해보다가 시스템 꼬인 적 있었거든요. 그 이후로 무조건 Docker로 돌립니다.

 

할 수 있는 게 생각보다 훨씬 많아요

 

할 수 있는 게 생각보다 훨씬 많아요

아이디어가 계속 떠올라요:

  • Python 컨테이너로 간단한 스크립트 테스트
  • Node 컨테이너로 CSS 빌드하거나 Sass 컴파일
  • Prettier 같은 포맷터 도구도 설치 없이 실행
  • 정적 사이트 만들 때 툴체인 쫙 불러다 쓰고 바로 정리

다 쓰고 나면? 아무 흔적도 없이 시스템은 그대로입니다. 완전 마음 편해요.

 

 

정리하자면...

Docker는 단순히 앱 돌리는 도구가 아니에요. 유틸리티 컨테이너라는 무기를 알게 되면, 개발이 훨씬 가볍고 유연해집니다. 무엇보다도 새로운 도구를 부담 없이 써볼 수 있다는 게 최고죠.

앞으로 이런 생각이 들면 한 번만 물어보세요: 이거 Docker로 해결할 수 있나?

답은 대부분 "가능하다"일 거예요. 전 그렇게 수많은 시간을 아끼고, 실수도 줄이고, 더 즐겁게 개발하고 있어요.

Utility container 한 번 써보면, 못 돌아갑니다. 이건 정말 써본 사람만 알아요.

반응형