0Pricing
AI Agents · Ders

Docker Tabanlı Aracı Korumalı Alanları

Aracı tarafından oluşturulan kodu çalıştırmak için tek kullanımlık kapsayıcılar başlatma.

Docker Tabanlı Aracı Korumalı Alanları, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Ajanların Korumalı Alanlara Neden İhtiyacı Var?

Bir ajan, LLM tarafından yazılmış kodu çalıştırdığında bu kod güvenilmezdir. Kod hassas dosyaları okumaya, dışarıya bağlantılar kurmaya veya sınırsız kaynak tüketmeye çalışabilir.

Korumalı alan, kodun ne yaptığından bağımsız olarak zararın sınırlandırılması için kod yürütmeyi yalıtır.

Korumalı Alan Katmanı olarak Docker

Docker kapsayıcıları, işletim sistemi düzeyinde hafif yalıtım sağlar. Her kod parçası, açık kaynak sınırları ve ağ kısıtlamaları bulunan yeni bir kapsayıcının içinde çalışır.

docker Python SDK'sı, ajanınızın içinden program aracılığıyla kapsayıcıları başlatıp yok etmenize olanak tanır.

import docker

client = docker.from_env()
print(client.version()['Version'])

Temel Kapsayıcı Çalıştırma

client.containers.run() bir kapsayıcıyı başlatır, bir komutu yürütür ve çıktıyı baytlar olarak döndürür. auto_remove=True ayarlandığında, kapsayıcı çıktıktan sonra temizlenir.

import docker

client = docker.from_env()

output = client.containers.run(
    'python:3.12-slim',
    'python -c "print(2 + 2)"',
    auto_remove=True
)

print(output.decode())  # '4'

Bellek ve CPU Sınırları

Sınırlar olmadan, başıboş bir betik ana makinenin belleğini tüketebilir. Kaynak kullanımını sınırlamak için mem_limit ve nano_cpus değerlerini geçirin.

Süreç mem_limit değerini aşarsa kapsayıcı OOM nedeniyle sonlandırılır ve bir istisna oluşturulur.

output = client.containers.run(
    'python:3.12-slim',
    'python -c "x = [0]*10**8"',   # tries to allocate ~800 MB
    mem_limit='256m',
    nano_cpus=1_000_000_000,        # 1 CPU
    auto_remove=True
)
# Raises docker.errors.ContainerError if OOM-killed

Ağı Devre Dışı Bırakma

network_disabled=True ayarlandığında kapsayıcının dışarı giden veya içeri gelen ağ çağrıları yapması engellenir; DNS aramaları bile başarısız olur. Bu, veri sızdırmayı ve komuta-kontrol geri çağrılarını durdurur.

output = client.containers.run(
    'python:3.12-slim',
    'python -c "import urllib.request; urllib.request.urlopen(\"http://example.com\")"',
    network_disabled=True,
    auto_remove=True
)
# Raises ContainerError: network unreachable

Yürütme Zaman Aşımı

Korumalı alanın içindeki sonsuz bir döngü, ajanın sonsuza kadar engellenmesine neden olabilir. Docker'ın süre dolduğunda kapsayıcıyı sonlandırması için containers.run() işlevine bir timeout (saniye) geçirin.

import docker
from docker.errors import ContainerError

client = docker.from_env()

try:
    output = client.containers.run(
        'python:3.12-slim',
        'python -c "while True: pass"',
        mem_limit='256m',
        network_disabled=True,
        auto_remove=True,
        timeout=30
    )
except Exception as e:
    print(f'Sandbox timeout or error: {e}')

Tam Korumalı Alan Yardımcı İşlevi

Tüm ayarları yeniden kullanılabilir bir işlevde bir araya getirmek, bu işlevi ajan araçlarından çağırmayı kolaylaştırır. Ajanın başarısızlıklar karşısında işlem yapabilmesi için hem standart çıktıyı hem de bir durum göstergesini döndürün.

import docker

client = docker.from_env()

def run_in_sandbox(code: str, timeout: int = 30) -> dict:
    cmd = f'python -c "{code.replace(chr(34), chr(39))}"'
    try:
        out = client.containers.run(
            'python:3.12-slim',
            cmd,
            mem_limit='256m',
            nano_cpus=500_000_000,
            network_disabled=True,
            auto_remove=True,
            timeout=timeout
        )
        return {'success': True, 'output': out.decode()}
    except Exception as e:
        return {'success': False, 'error': str(e)}

Geçici Çalışma Alanı Bağlama

Kodun girdi dosyalarını okuması veya çıktı dosyalarını yazması gerekiyorsa, ana makinedeki geçici bir dizini kapsayıcıya bağlayın. Çalışma alanı için volumes değerini 'rw' moduyla kullanın ve başka hiçbir şeyi bağlamayın.

import tempfile, os

with tempfile.TemporaryDirectory() as tmpdir:
    # Write input data
    with open(os.path.join(tmpdir, 'data.txt'), 'w') as f:
        f.write('hello sandbox')

    output = client.containers.run(
        'python:3.12-slim',
        'python -c "print(open(\"/workspace/data.txt\").read())"',
        volumes={tmpdir: {'bind': '/workspace', 'mode': 'rw'}},
        mem_limit='256m',
        network_disabled=True,
        auto_remove=True
    )
    print(output.decode())

Salt Okunur Dosya Sistemi

Kapsayıcının kök dosya sistemini salt okunur olarak bağlamak için read_only=True ayarını yapın. Kod yalnızca açıkça bağlanmış birimlere yazabilir. Bu, imajın içindeki /etc, /usr veya diğer hassas yollara yazılmasını engeller.

import tempfile

with tempfile.TemporaryDirectory() as tmpdir:
    output = client.containers.run(
        'python:3.12-slim',
        'python -c "open(\"/output/result.txt\",\"w\").write(str(1+1))"',
        volumes={tmpdir: {'bind': '/output', 'mode': 'rw'}},
        read_only=True,
        mem_limit='256m',
        network_disabled=True,
        auto_remove=True
    )
    print(open(f'{tmpdir}/result.txt').read())  # '2'

Korumalı Alanı Ajan Aracına Entegre Etme

Korumalı alan çalıştırıcısını LLM'nin çağırabileceği bir araç olarak kaydedin. Ajan kod oluşturur, araç bu kodu yalıtılmış bir ortamda yürütür ve çıktı bir sonraki akıl yürütme adımına geri aktarılır.

tools = [
    {
        'type': 'function',
        'function': {
            'name': 'execute_python',
            'description': 'Run a Python snippet in an isolated Docker sandbox.',
            'parameters': {
                'type': 'object',
                'properties': {
                    'code': {'type': 'string', 'description': 'Python code to execute.'}
                },
                'required': ['code']
            }
        }
    }
]

def handle_tool_call(name, args):
    if name == 'execute_python':
        return run_in_sandbox(args['code'])

Hataları Ele Alma ve Temizleme

Docker arka plan hizmeti çalışmıyorsa veya imaj önbelleğe alınmamışsa kapsayıcıların başlatılması başarısız olabilir. Her zaman docker.errors.DockerException durumunu ele alın ve istisnalar oluşsa bile kapsayıcıların temizlendiğinden emin olun.

from docker.errors import DockerException, ImageNotFound

def safe_run(code: str) -> dict:
    try:
        return run_in_sandbox(code)
    except ImageNotFound:
        # Pull the image first
        client.images.pull('python:3.12-slim')
        return run_in_sandbox(code)
    except DockerException as e:
        return {'success': False, 'error': f'Docker unavailable: {e}'}
    except Exception as e:
        return {'success': False, 'error': str(e)}

Veri Sızdırmayı Önlemede En Önemli Korumalı Alan Ayarı Hangisidir?

Bir ajan korumalı alanı, yürütülen kodun çalınan verileri harici bir sunucuya göndermesini engellemelidir. Hangi Docker parametresi dışarı giden ağ erişimini doğrudan engeller?

Docker Korumalı Alan Özeti

Docker tabanlı korumalı alanlar, bellek ve CPU sınırlarını, ağ yalıtımını, yürütme zaman aşımlarını ve salt okunur dosya sistemlerini bir araya getirerek ajanlara güvenli bir yürütme ortamı sağlar.

Bu ayarları yeniden kullanılabilir bir yardımcı işlevde bir araya getirin ve ana bilgisayar sistemini riske atmadan LLM'nin oluşturduğu kodu güvenle çalıştırabilmesi için bu işlevi bir ajan aracı olarak sunun.

Sıkça Sorulan Sorular

“Docker Tabanlı Aracı Korumalı Alanları” dersi ücretsiz mi?

Evet — “Docker Tabanlı Aracı Korumalı Alanları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Docker Tabanlı Aracı Korumalı Alanları” dersinde ne öğreneceğim?

Aracı tarafından oluşturulan kodu çalıştırmak için tek kullanımlık kapsayıcılar başlatma. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Docker Tabanlı Aracı Korumalı Alanları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Docker Tabanlı Aracı Korumalı Alanları
  2. Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı
  3. E2B ve Bulut Korumalı Alan Hizmetleri
  4. Kod Çalıştırma İçin Güvenlik İlkeleri
← AI Agents Sayfasına Dön