/** * Docker 샌드박스 실행 매니저 * * Docker 컨테이너를 사용하여 격리된 환경에서 보안 스캔을 실행합니다. * 리소스 제한, 타임아웃, 네트워크 격리 등을 적용합니다. * * @author zerry */ /** * Docker 실행 옵션 */ export interface DockerRunOptions { /** 이미지 이름 */ image: string; /** 실행할 명령어 */ command: string[]; /** 환경 변수 */ env?: Record; /** CPU 제한 (코어 수) */ cpuLimit?: number; /** 메모리 제한 (MB) */ memoryLimit?: number; /** 타임아웃 (ms) */ timeout?: number; /** 네트워크 비활성화 */ noNetwork?: boolean; /** 읽기 전용 루트 파일시스템 */ readonlyRootfs?: boolean; /** 볼륨 마운트 */ volumes?: Array<{ host: string; container: string; readonly?: boolean; }>; } /** * Docker 실행 결과 */ export interface DockerRunResult { success: boolean; stdout: string; stderr: string; exitCode: number; timedOut: boolean; error?: string; } /** * Docker 샌드박스 매니저 */ export declare class DockerSandboxManager { private static readonly DEFAULT_IMAGE; private static readonly DEFAULT_TIMEOUT; private static readonly DEFAULT_MEMORY_LIMIT; private static readonly DEFAULT_CPU_LIMIT; /** * Docker가 설치되어 있는지 확인 */ isDockerAvailable(): Promise; /** * 이미지가 존재하는지 확인 */ imageExists(imageName: string): Promise; /** * 이미지 빌드 */ buildImage(dockerfilePath?: string, imageName?: string): Promise; /** * 컨테이너 실행 */ run(options: DockerRunOptions): Promise; /** * Docker 인자 구성 */ private buildDockerArgs; /** * 컨테이너 실행 */ private executeContainer; /** * 컨테이너 정리 */ private cleanup; /** * 컨테이너 이름 생성 */ private generateContainerName; /** * 모든 스캐너 컨테이너 정리 */ cleanupAllScannerContainers(): Promise; } /** * 싱글톤 인스턴스 */ export declare const dockerSandboxManager: DockerSandboxManager;