INTEGRITY Dokumentace

Runtime kontejneru

Každý sandbox běží v izolovaném kontejneru Linux s předinstalovaným Pythonem, Node.js a běžnými vývojářskými nástroji. Úplný seznam předinstalovaného softwaru a postup úpravy obrazu kontejneru najdete v Referenční dokumentace Dockerfile.

Instalace softwaru za běhu

Nainstalujte další software za běhu pomocí standardních správců balíčků:

# Python packages
pip install scikit-learn tensorflow

# Node.js packages
npm install express

# System packages (requires apt-get update first)
apt-get update && apt-get install -y redis-server

Souborový systém

Kontejner poskytuje standardní souborový systém Linuxu. Číst a zapisovat můžete kdekoli, kde k tomu máte oprávnění.

Standardní adresáře:

Příklad:

await sandbox.writeFile('/workspace/app.py', 'print("Hello")');
await sandbox.writeFile('/tmp/cache.json', '{}');
await sandbox.exec('ls -la /workspace');

Správa procesů

Procesy fungují stejně, jak byste čekali v běžném linuxovém prostředí.

Procesy na popředí (exec()):

const result = await sandbox.exec('npm test');
// Waits for completion, returns output

Procesy na pozadí (startProcess()):

const process = await sandbox.startProcess('node server.js');
// Returns immediately, process runs in background

Síťové možnosti

Odchozí připojení fungují:

curl https://api.example.com/data
pip install requests
npm install express

Příchozí připojení vyžadují zveřejnění portu:

const { hostname } = new URL(request.url);
await sandbox.startProcess('python -m http.server 8000');
const exposed = await sandbox.exposePort(8000, { hostname });
console.log(exposed.url); // Public URL

Localhost funguje v rámci sandboxu:

redis-server &      # Start server
redis-cli ping      # Connect locally

Security

Mezi sandboxy (izolované):

V sandboxu (sdílené):

Chcete-li spouštět nedůvěryhodný kód, použijte pro každého uživatele samostatný sandbox:

const sandbox = getSandbox(env.Sandbox, `user-${userId}`);

Omezení

Nelze: