솔직히 이젠 긴 명령어 좀 지겹지 않나요?
혹시 docker run 명령어를 몇 번이나 쳐보셨나요? 전 한동안 거의 복사-붙여넣기 장인이 된 줄 알았어요. npm 명령 하나 돌리려고 매번 터미널에 복잡한 옵션 붙여서 쓰다 보면, 이게 개발인지 명령어 암기 대회인지 헷갈릴 정도예요.
그러다 알게 된 게 바로 utility container. 이걸 알고 나선 진짜 ‘와, 이걸 왜 이제 알았지?’ 싶었어요.
오늘은 이 utility container를 어떻게 활용하면 진짜 개발에만 집중할 수 있는지, 그리고 그걸 어떻게 Docker Compose로 더 쉽게 만들 수 있는지 찐 경험담 섞어서 풀어드릴게요. Laravel 예제도 있으니, 실무에 어떻게 쓰이는지도 한눈에 보일 거예요.
Utility Container? 그게 뭐야, 먹는 거야?
Utility container라는 건 한마디로 “일회성 작업용 컨테이너”라고 보시면 돼요. 무슨 웹 서버처럼 계속 도는 게 아니라, npm init처럼 한 번 실행하고 끝나는 작업에 딱이에요.
언제 쓰면 좋냐고요?
- Node나 PHP 같은 거 굳이 설치 안 하고 빠르게 테스트하고 싶을 때
- 팀원들이랑 똑같은 환경을 써야 할 때
- 오늘 안에 뭐 하나 뚝딱 만들어야 할 때 (이거 공감하시죠?)
예를 들어, 새로운 프로젝트 시작할 때 npm init 한번 치고 끝내고 싶은데 Node 설치는 귀찮다? 바로 utility container 호출이죠.

docker run, 처음엔 편했는데 점점 피곤해짐
처음엔 이렇게 씁니다:
docker run -it --rm -v $(pwd):/app node npm init
근데 진짜 문제는, 이렇게 간단한 거 하나 하려고 매번 길고 헷갈리는 명령어 외우고, 오타나면 다시 치고... 아, 스트레스.
'이거 그냥 어디다 저장해두고 단축해서 쓰면 안 되나?' 싶던 찰나, Docker Compose가 떠올랐죠. 설정 파일 하나 만들어두면? 진짜 인생이 편해집니다.
Docker Compose: 진짜는 단 하나의 container부터 시작된다
많은 분들이 Docker Compose는 여러 container 쓸 때만 필요한 거라고 생각하시는데요, 저도 그렇게 생각했었어요. 근데 아니에요. 하나만 써도 엄청나게 유용해요.
왜 좋냐면요:
- 매번 길게 안 쳐도 되고,
- 설정은 한 곳에 정리돼 있고,
- 팀원이랑 공유도 쉽고,
- 내 컴퓨터 환경 더럽히지도 않고!
한 번만 써보시면 돌아갈 수 없어요. 진짜루.

Compose 설정? 의외로 간단해요
docker-compose.yaml 파일 하나 딱 만드세요. 내용은 이렇게:
version: "3.8"
services:
npm:
build: .
stdin_open: true
tty: true
volumes:
- .:/app
뭔가 복잡해 보이지만, 하나씩 보면 별 거 없어요:
- 버전은 그냥 3.8
- npm이라는 서비스 하나 만들고
- 빌드 경로는 현재 폴더
- 사용자 입력 받을 수 있게 설정하고
- 폴더 연결도 /app으로 딱 해두고요
그리고 Dockerfile은 아주 심플하게:
FROM node:latest
WORKDIR /app
ENTRYPOINT ["npm"]
이제 진짜 한 줄이면 끝이에요:
docker compose run npm init
npm 질문들 나오고 나면 package.json도 폴더에 생겨 있어요. 깔끔하죠?

docker compose up이 안 되는 이유
혹시 처음에 이렇게 써보셨나요?
docker compose up init
전 그렇게 했다가 한참 헤맸어요. 에러 메시지 뜨고 뭔가 이상해서 찾아보니, 이건 background에서 계속 돌 컨테이너용 명령어더라고요.
우리는 그냥 ‘작업하고 끝!’ 스타일이니까 run 써야 해요:
docker compose run npm init
설치도 마찬가지:
docker compose run npm install express
이렇게 하면 OK!
어? 실행한 container가 없어졌네?
명령어 실행하고 나서 docker ps 해보면 아무것도 안 보여요. 저도 처음엔 뭔가 잘못된 줄 알았죠.
그럴 땐 이걸로 확인하세요:
docker ps -a
보셨죠? 종료된 container들이 줄줄이 있어요. 기본적으로는 자동으로 안 지워지거든요.
그래서 필요한 --rm
docker compose run --rm npm init
이렇게 쓰면 작업 끝나자마자 container도 사라집니다. 깔끔하게 정리되니까 마음이 편하죠.
이미 쌓인 거 한 번에 지우고 싶으시면:
docker container prune
개운하게 싹 정리됩니다.
실전! Laravel 개발 환경도 이렇게 준비해요
Laravel 좋아하시는 분들 많으시죠? 저도 처음엔 뭔가 세팅이 너무 많아서 머리가 아팠는데, utility container 덕분에 한방에 해결됐어요.
- PHP container로 Laravel 새 프로젝트 만들고
- Node container로 frontend asset 빌드하고
이러면 PHP, Composer, Node, npm 다 설치 안 해도 됩니다. 말 그대로 깔끔한 dev 환경!
다음 글에서 이거 실전으로 보여드릴게요. 궁금하셨다면 꼭 확인해보세요!
마무리: 나만 알고 싶은 Docker의 숨은 꿀기능
utility container는 정말 ‘몰랐으면 평생 불편했을 뻔’한 기능이에요. Docker Compose랑 같이 쓰면:
- 설정은 한 번만 해두면 되고,
- 명령어는 초간단,
- 팀이랑 작업할 때도 착착 맞고,
- 내 컴퓨터도 깔끔하게 유지되고요.
한 가지 팁: --rm 옵션은 꼭 기억하세요. 컨테이너 무덤 방지용입니다 😅
저처럼 반복되는 환경 셋업에 지친 분들, 새로운 도구 설치 없이 빠르게 무언가 만들고 싶은 분들께 진심으로 추천드려요.
'SW > Kubernetes, Docker' 카테고리의 다른 글
| Laravel 개발환경, 로컬 설치 없이 Docker로 빠르게 구축하는 법 (0) | 2025.09.26 |
|---|---|
| Docker로 Laravel 개발 환경 쉽게 구성하는 법 (PHP 설치 없이도 OK!) (0) | 2025.09.25 |
| 실수 없이 npm 명령어 실행하는 법 – Docker Entrypoint로 깔끔하게! (0) | 2025.09.23 |
| Node.js 설치 없이 개발하는 법 – Docker 유틸리티 컨테이너로 프로젝트 시작하기 (0) | 2025.09.22 |
| Docker 유틸리티 컨테이너란? Node 없이 npm init 하는 법 (0) | 2025.09.21 |