Invisible Safety,

Proven by Intelligence

보이지 않는 안전을 인텔리전스로 증명하다.

기술 노트
IT 산업의 변화를 이끄는 MDS인텔리전스의
기술 인사이트를 만나보세요.
시스템 소프트웨어 개발
[CodeSonar] Container 환경에서의 분석 활용 방안
2026년 02월 11일

임베디드 시장에서는 대부분 리눅스 운영체제가 사용됩니다.


그래서 실제 개발 환경도 리눅스 기반인 경우가 많지만, Windows 환경에서 개발하기 위해 VMware나 VirtualBox 같은 가상 머신(VM)을 설치해 리눅스를 올려 프로젝트를 구축하는 방식도 흔히 사용됩니다.


 이런 방식은 물리 PC의 운영체제에 구애받지 않고 실제 배포 환경과 유사한 개발 환경을 구성할 수 있다는 장점이 있습니다.


​하지만 VM은 독립된 OS 전체를 구동해야 하므로 다음과 같은 단점이 존재합니다.

    X  메모리 사용량이 많다.

    X  부팅 시간이 길다.

    X  자원 소모가 크다.


 이러한 VM의 한계를 해결하기 위해 등장한 기술이 컨테이너(Container) 입니다.


컨테이너란?


컨테이너는 Host(물리 PC)의 운영체제 커널을 공유하면서, 특정 애플리케이션을 실행하는 데 필요한 라이브러리·런타임·설정 파일만을 포함해 독립된 실행 환경처럼 제공하는 가벼운 가상화 기술입니다.


✅  VM처럼 OS 전체를 포함하지 않는다.

✅  실행 속도가 빠르다.

✅  메모리 사용량이 적다.

✅  배포 및 재현성이 높다.



(좌) VM 구조     /    (우)컨테이너 구조 


 위 이미지에서처럼 컨테이너 아래에는 Docker가 있는데, 이는 곧 컨테이너를 생성·관리하는 소프트웨어를 의미합니다.


즉, Docker를 통해 컨테이너 기반 개발 환경을 구성할 수 있습니다.


Docker 환경에서 필요한 핵심 요소

1) Dockerfile

이미지를 만들기 위한 재료(패키지, 라이브러리, 환경 변수 등)를 정의하는 파일입니다. 요리로 비유하면 레시피에 해당합니다.


​2) Image

Dockerfile로부터 생성되며, 이를 기반으로 실제 실행 단위인 컨테이너를 만들어냅니다.


​Docker에서는 프로젝트에 필요한 OS·컴파일러·툴체인 등을 하나의 이미지로 만들어 누구나 동일한 환경을 사용하도록 할 수 있다는 장점이 있습니다.


 CodeSonar 역시 별도 Dockerfile을 제공하여, 컨테이너 기반 환경에서도 쉽게 분석을 수행할 수 있습니다.


<CodeSonar 설치 경로 내>


그럼 이제 컨테이너 환경에서 CodeSonar를 이용한 분석 수행 방법을 알아보겠습니다.

 


CodeSonar를 기존 Base Image에 추가하여 새로운 이미지 생성



<그림-1>


우선, 그림-1과 같이 프로젝트를 빌드할 수 있는 환경을 가진 Base Image가 있다고 가정해 보겠습니다.


 아래 명령어로 기존 Base Image 위에 CodeSonar를 설치한 새 이미지를 생성할 수 있습니다.


docker build . --tag {Image Name} \

   --build-arg CODESONAR_PACKAGE={CodeSonar Installation File Name} \

   --build-arg BASE_IMAGE={Base Image Name} \

   --build-arg TELEMETRY=1

-    Image Name : 새로 생성할 이미지 이름

-    CodeSonar Installation File : CodeSonar 설치 파일(.tar.gz)

-    Base Image Name : 프로젝트 빌드 환경이 포함된 기존 이미지


​여기서 --build-arg는 이미지 빌드 시 CodeSonar의 Dockerfile 안에서 사용되는 변수를 의미합니다.



<그림-2>


이렇게 되면 그림-2와 같이 기존 프로젝트 환경 + CodeSonar 설치 환경이 하나의 이미지로 통합됩니다.


 

컨테이너 구동 및 CodeSonar 분석 수행

아래 명령어를 통해 생성한 이미지로 컨테이너를 실행하며 동시에 프로젝트 분석을 수행합니다.


docker run {Image Name} \

   /opt/codesonar/codesonar/bin/codesonar analyze {Project Name} \

   -clean -foreground {Server IP}:7340 \

   {Build Command} -C {Project Root Path}

-    Image Name : 생성한 이미지

-    Project Name : CodeSonar 프로젝트 이름

-    Server IP : CodeSonar 서버 IP

-    Build Command : 프로젝트 빌드 명령어

-    Project Root Path : 컨테이너 내 프로젝트 루트 경로


여기까지 가상 머신의 단점을 보완하는 컨테이너 환경에서 CodeSonar를 활용한 분석 방법을 살펴보았습니다.


출처 : 

https://www.atlassian.com/ko/devops/devops-tools/devsecops-tools

https://waspro.tistory.com/693

https://www.jaenung.net/tree/2930


--------------------------


컨테이너 기반은 VM보다 가볍고 빠르며 재현성이 뛰어납니다.


​컨테이너 환경에서 CodeSonar를 사용하면 설치 없이 즉시 분석할 수 있고, 팀 전체가 동일한 빌드·분석 환경을 공유할 수 있습니다.


이로써 개발 속도와 품질을 동시에 향상시킬 수 있는 효과적인 방법이 됩니다.


위 내용과 관련하여 궁금하신 점이 있으시면 codesonar@mdsit.co.kr로 문의 부탁드립니다