본문 바로가기
MLOps/Docker Compose

[8] Utility Container

by Finn# 2025. 3. 25.
728x90

 


Intro

Utility Container는 본 강의에서 새롭게 정의한 용어이다. 해당 용어의 골자만 이야기하자면, 개발환경 설정 명목으로 node와 같은 d어플리케이션을 설치하면 동시에 다양한 부가 프로그램들이 Local 환경에서 설치되는데, 우리가 Container 환경에서 실행해볼 목적이라면, 단순히 개발 과정에 필요한 파일들만 Local 환경에 세팅하면 좋을 것이다.

 

이 때 Container의 격리된 환경 그리고 Binding Mount를 활용한다면, 필요한 응용프로그램을 Container환경에서 실행시키고 필요한 파일만 Binding Mount하여 Local에 가져옴으로 환경을 구성할 수 있다. 이렇게 동작하도록 설정된 Container를 강의에서는 Utility Container라고 정의했다.


Utility Container가 왜 필요할까?

Utility Container가 꼭 필요한 것은 아니다. 그냥 리소스를 생각하면서 개발환경을 세팅하기위한 유용한 방식 정도로 이해하면 된다. 예를 들어 우리가 node.js로 개발을 하려고 할 때, 어떠한 application을 실행하려면 이에 대한 의존성 라이브러리를 사전에 package.json에 정의해둬야할 것이다. 다만 필요한 파일들을 직접 생성하기보다, 실제로 Container 상에서 npm init 실행을 통해 만들어진 파일들에 내용을 정리해나가는 편이 더 유용할 것이다. 

 

Local에서는 당연히 안돌아간다. npm 패키지 매니저를 Local에서 한게 아니기 때문이다 ! 대신 Local에서 개발한 내용을 토대로 npm이란 패키지 매니저를 설치하도록 Container에 해당 코드를 넣었을 때는 Local에 있는 의존성 패키지 목록들이 container에서 만들어진 npm 패키지 매니저에 의해 돌아갈 것이다 !


Utility Container  특징

 Utility Container의 특징은 당연히 Application을 포함하고 있지 않은 개발 환경 설정을 위한 프로그램만 설치되도록 만든 Contaienr라는 점이다. 이는 Container 내부에서 개발을 위해 필요한 파일을 생성하고 이를 Local에 공유할 목적으로 만들기 때문에 당연한 맥락이다.  


Utililty Container Setting을 위한 명령어

우선 npm init을 container에서 실행시켜줘야한다. 본 강의에서는 node 환경을 구축했기에 dockerfile에 entrypoint로 npm을 실행시켜주고 override시켜주는 문법을 통해 npm init을 실행해주는 방식을 사용했다.

 

그리고 실제 Local 환경과의 연결을 위해 Binding Mount로, Local Address:Container 속 파일시스템을 연결시켜줬다. 이 과정에서 너무 명령어가 길어지고 관리가 힘들어서 docker-compose를 통해서 명령어를 관리하는 것까지 적용했다 .

 

 여기서 한 가지 특징은 docker-compose를 up/down 방식으로 관리할 경우 내부 실행되는 컨테이너들이 다 남아있는 문제와 특정 서비스만을 실행시킬 수 없다는 단점이 있는데, 이를 run 방식으로 관리하면 특정 서비스 실행과 서비스가 들어있는 container의 rm flag 사용 그리고 override 모두 사용할 수 있다. 

 

해당 내용을 적용해서 docker-compose로 Utility Contaienr까지 적용해보는 것으로 강의가 진행되었다.


Outro

추후 코드도 추가해서 설명을 보완할 것
필요한 파일들이 해당 이미지에 이미 내재되어 있으면, 배포 시에 엄청 가볍게 소스 코드를 뿌리고 이미지를 받아서 프로그램을 구동하게 할 수 있음... !

인스타 주소 🎗

https://www.instagram.com/f.inn_sharp/

반응형