gVisor가 systemd를 지원해 단일 서비스 중심의 컨테이너를 넘어 Ubuntu·Debian·Red Hat 기반의 전체 Linux 시스템과 GNOME 데스크톱을 샌드박스 안에서 실행할 수 있게 됐다. 이에 따라 개발 환경이나 CI 테스트에 VM과 비슷한 컨테이너를 쓰고, AI 에이전트가 데스크톱을 조작하는 구성도 만들 수 있다.
이번 지원에는 새 마운트 API, Cgroups v2, Pidfd, tmpfs·overlayfs의 POSIX ACL, openat2(2) 등 커널 API와 기능이 추가됐다. systemd는 Ubuntu, Debian, Red Hat의 Universal Base Images에서 작동하는 것으로 테스트됐다.
gVisor 저장소에는 systemd를 사용하는 Ubuntu 개발 컨테이너와 Debian GNOME 이미지가 포함돼 있다. GNOME 환경은 RDP로 접속할 수 있으며, 예시에서는 127.0.0.1:3389와 기본 계정 gnome:gnome을 사용한다. CUPS를 빌드해 systemd 서비스로 실행하고, Ansible로 nginx를 설치하는 사례도 제시됐다. Apache, PostgreSQL, MariaDB, Redis, Docker도 systemd 아래에서 작동하는 테스트를 거쳐 통합 테스트 모음에 포함됐다.
자료는 gVisor에서 --privileged 옵션을 써도 샌드박스 안 애플리케이션에 호스트 권한이 추가되는 것은 아니며, gVisor가 애플리케이션에 보이는 추가 권한을 모사한다고 설명한다. 다만 개발 환경을 만들 때는 --in-sandbox-cgroup=v2와 --allow-suid 등의 설정이 필요하다.
또 다른 예시는 Multi-Agent gVisor Isolation (MAGI)에서 다룬 OpenClaw 에이전트에 GNOME 데스크톱을 도구로 제공하는 구성이다. GNOME과 OpenClaw 사이에 MCP 서버를 두고 가상 마우스·키보드 입력을 전달한다. 자료에서는 Ollama로 모델을 구동한 뒤 에이전트가 시스템 정보를 확인하고 LibreOffice Calc에서 예제 스프레드시트를 만드는 과정을 시연한다. 이는 데모 사례이며, 해당 구성에는 GPU VM과 Docker, gVisor, NVIDIA 드라이버 설치가 필요하다.
부록: 원문 예시
chert@dev:~/cups-2.4.19$ sudo systemctl enable --now cups Created symlink '/etc/systemd/system/printer.target.wants/cups.service' → '/usr/lib/systemd/system/cups.service'. Created symlink '/etc/systemd/system/multi-user.target.wants/cups.service' → '/usr/lib/systemd/system/cups.service'. Created symlink '/etc/systemd/system/sockets.target.wants/cups.socket' → '/usr/lib/systemd/system/cups.socket'. Created symlink '/etc/systemd/system/multi-user.target.wants/cups.path' → '/usr/lib/systemd/system/cups.path'. chert@dev:~/cups-2.4.19$ sudo systemctl status cups ● cups.service - CUPS Scheduler Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-03 18:39:47 UTC; 4h 17min ago Invocation: beac14c3deb245bb9db702ee186dfbc5 TriggeredBy: ○ cups.path ● cups.socket Docs: man:cupsd(8) Main PID: 16097 (cupsd) Status: "Scheduler is running..." Tasks: 1 (limit: 9830) Memory: 2.3M CGroup: /system.slice/system-cups.slice/cups.service └─16097 /usr/sbin/cupsd -l Sep 03 18:39:47 dev systemd[1]: Starting cups.service - CUPS Scheduler... Sep 03 18:39:47 dev systemd[1]: Started cups.service - CUPS Scheduler.
chert@dev:~$ sudo systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Fri 2026-09-04 21:11:21 UTC; 1min 10s ago Invocation: f42bafe5b01a412f8c8a961eec0cf957 Docs: man:nginx(8) Process: 2397 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2398 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2437 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS) Main PID: 2400 (nginx) Tasks: 9 (limit: 9830) Memory: 24.5M CGroup: /system.slice/nginx.service ├─2400 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ├─2439 "nginx: worker process" ├─2440 "nginx: worker process" ├─2441 "nginx: worker process" ├─2442 "nginx: worker process" ├─2443 "nginx: worker process" ├─2444 "nginx: worker process" ├─2445 "nginx: worker process" └─2446 "nginx: worker process" Sep 04 21:11:21 dev systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server... Sep 04 21:11:21 dev systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server. Sep 04 21:11:23 dev systemd[1]: nginx.service: Failed to get CPU usage: No such file or directory Sep 04 21:11:23 dev systemd[1]: Reloading nginx.service - A high performance web server and a reverse proxy server... Sep 04 21:11:23 dev nginx[2437]: 2026/09/04 21:11:23 [notice] 2437#2437: signal process started Sep 04 21:11:23 dev systemd[1]: Reloaded nginx.service - A high performance web server and a reverse proxy server. Sep 04 21:12:32 dev systemd[1]: nginx.service: Failed to get CPU usage: No such file or directory chert@dev:~$
chert@dev:~$ curl http://127.0.0.1 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> chert@dev:~$
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요