LLM이 만든 코드, Docker 컨테이너에서 돌리면 안전할까?
에이전트가 만든 코드를 그냥 docker run으로 돌리면 네트워크, 호스트에만 열어 둔 서비스, 넘겨준 환경 변수, 마운트한 디렉터리까지 그대로 닿습니다. 격리 시험 코드 8개와 로컬 LLM이 쓴 정상 코드를 기본 실행과 옵션을 모두 건 컨테이너에서 돌려, 무엇이 막히고 무엇이 남는지와 정상 코드가 계속 도는지 확인합니다.
@Hong2026-10-03조회 280

에이전트가 만든 코드를 그냥 docker run으로 돌리면 네트워크, 호스트에만 열어 둔 서비스, 넘겨준 환경 변수, 마운트한 디렉터리까지 그대로 닿습니다. 격리 시험 코드 8개와 로컬 LLM이 쓴 정상 코드를 기본 실행과 옵션을 모두 건 컨테이너에서 돌려, 무엇이 막히고 무엇이 남는지와 정상 코드가 계속 도는지 확인합니다.

CPU limit은 평균 사용량이 아니라 100밀리초마다 쓸 수 있는 CPU 시간을 자르는 방식이라, 짧은 순간 여러 스레드가 몰리면 사용률이 낮아도 요청이 멈춰 기다립니다. Docker의 --cpus로 같은 부하에서 limit별 p99 지연과 cpu.stat의 throttling 값을 비교하고, --cpuset-cpus와의 차이를 확인합니다.

Docker 빌드가 느린 이유는 대개 캐시가 어디서 깨지는지 모르기 때문이고, 이미지가 큰 이유는 빌드 도구가 실행 이미지에 그대로 남기 때문입니다. Node.js 24 앱 하나를 Dockerfile을 바꿔 가며 코드만 고쳤을 때 설치 단계가 캐시되는지와 멀티 스테이지로 줄어든 이미지 크기를 docker history로 읽습니다.

컨테이너 메모리 제한을 넘으면 커널이 프로세스를 강제로 끝내고, 런타임 힙 한도에 먼저 닿으면 런타임이 스스로 오류를 내고 끝납니다. cgroup v2 환경에서 Node.js 24의 힙 한도가 제한에 따라 어떻게 정해지고, 같은 프로그램이 512MB와 256MB 제한에서 어떻게 끝나는지 종료 코드와 OOMKilled로 확인합니다.