프로젝트 소개

gVisor는 실행 중인 애플리케이션과 호스트 운영 체제 사이에 강력한 격리 계층을 제공합니다. Linux 유사 인터페이스를 구현하는 애플리케이션 커널이지만, Linux와 달리 메모리 안전 언어인 Go로 작성되었으며 사용자 공간에서 실행됩니다. gVisor에는 Docker 및 Kubernetes와 통합되는 runsc라는 OCI(Open Container Initiative) 런타임이 포함되어 있어 샌드박스 컨테이너를 간단하게 실행할 수 있습니다. 이는 seccomp-bpf와 같은 시스템 호출 필터도 아니고, firejail이나 AppArmor와 같은 Linux 격리 프리미티브의 래퍼도 아니며, 전통적인 VM도 아닙니다. 대신 gVisor는 세 번째 접근 방식을 취합니다. VM의 많은 보안 이점을 제공하면서도 일반 사용자 공간 애플리케이션의 낮은 리소스 사용량, 빠른 시작, 유연성을 유지합니다. 애플리케이션이 기대하는 기능에 대한 접근은 허용하면서 애플리케이션이 접근할 수 있는 호스트 커널 표면을 제한하여, 사실상 Linux를 통해 Linux를 구현합니다. 이 프로젝트는 x86_64 및 ARM64에서 빌드됩니다. 빌드 지침에는 Bazel을 사용한 래핑된 빌드 컨테이너 사용, Bazel로 직접 빌드, 단위 및 표준 테스트 스위트 실행, macOS에서의 테스트가 포함됩니다. 외부 패키지가 Netstack을 통한 사용자 공간 네트워킹과 같은 gVisor 하위 패키지를 가져올 수 있도록 표준 Go 도구와의 호환성을 위해 합성 go 브랜치가 유지 관리되지만, 해당 브랜치에서의 runsc 빌드는 지원되지 않습니다. 문서, 빠른 시작 가이드, 기술 아키텍처는 gvisor.dev에서 확인할 수 있습니다. 저장소에는 거버넌스, 채택자, 보안 정책, 기여 정보도 포함되어 있습니다.