Перейти к содержимому
Главная страница » Docker Sandboxes + GitLab CI: как запускать полностью изолированные Docker-песочницы в GitLab в 2026 году

Docker Sandboxes + GitLab CI: как запускать полностью изолированные Docker-песочницы в GitLab в 2026 году

Docker Sandboxes — одна из самых интересных возможностей Docker 2026 года. Теперь разработчик или GitLab CI может запускать полноценную изолированную среду с собственным Docker Engine внутри microVM. Это позволяет безопасно выполнять сборки, тесты, AI-агентов (Claude Code, Codex, Cursor Agent), Docker Buildx и любые потенциально опасные команды без доступа к хостовой машине. Docker перевёл эту функцию из Docker Desktop в отдельную утилиту sbx, которая работает независимо и поддерживает воспроизводимые окружения.

Содержание

Что нового появилось в Docker Sandboxes

В отличие от привычного Docker-in-Docker (dind) или монтирования /var/run/docker.sock, новый Sandbox создаёт отдельную виртуальную машину.

Главное отличие

Классический Docker RunnerDocker Sandbox
Общий kernel с хостом.Собственный Linux kernel внутри microVM.
Доступ к Docker Socket.Отдельный Docker Engine.
Контейнер может влиять на систему.Хост полностью изолирован.
Ограниченная сеть.Политики сети Allow / Deny.
Сложно безопасно запускать AI-агентов.Можно использовать YOLO / Dangerous Mode безопасно.

Docker официально рекомендует Sandboxes именно как безопасную среду исполнения AI-агентов и контейнеров.

Docker Documentation+1

Архитектура Docker Sandbox

Как это устроено

Host → MicroVM → Docker Engine → Containers

Каждая песочница получает собственный Docker daemon, файловую систему и сетевой стек. Хостовый Docker Socket внутрь не пробрасывается.

Docker Documentation

Что изолируется

The Untrusted Autonomous Workload and AI Sandboxes | Docker
MicroVMs - jmanteau

Docker Networking - An Overview

6

КомпонентИзоляция
Файловая системаТолько выбранный workspace монтируется внутрь.
Docker EngineПолностью отдельный daemon.
NetworkПрокси фильтрует соединения по политикам.
SecretsПередаются через sbx secret.
KernelСобственный kernel внутри microVM.

Почему это важно для GitLab CI

В GitLab исторически существует три варианта запуска Docker.

Сравнение подходов

Docker SocketDocker-in-DockerDocker Sandbox
Очень быстро.Средняя скорость.Немного медленнее запуска.
Небезопасно.Нужен privileged.Privileged не нужен внутри хоста.
Контейнер управляет хостом.Общий kernel.Отдельная microVM.
Нет сетевых политик.Нет гибких политик.Allow / Deny список сайтов.

Где Sandbox выигрывает

  • CI/CD с недоверенным кодом.
  • AI Code Review.
  • BuildKit.
  • Docker Compose внутри CI.
  • Интеграционные тесты.
  • Kubernetes manifests validation.

Как GitLab запускает Sandbox

GitLab Pipeline → Sandbox → Docker

Runner запускает sbx run, внутри microVM стартует Docker Engine, после чего контейнеры собираются и публикуются в GitLab Registry.

Установка Docker Sandbox

Поддерживаемые платформы

ПлатформаСтатус
Ubuntu 24.04 / 22.04Поддерживается.
Debian 12Поддерживается.
Windows 11Поддерживается через Hypervisor Platform.
macOS Apple SiliconПоддерживается.

Документация Docker рекомендует использовать отдельный пакет docker-sbx.

Docker Documentation+1

Linux

curl -fsSL https://get.docker.com | sudo REPO_ONLY=1 sh

sudo apt update
sudo apt install docker-sbx

Проверяем

sbx version

Авторизация Docker

sbx login
Tutorial Docker: instalación y primeros pasos - IONOS
Running AI agents safely in a microVM using docker sandbox
DeadlineExceeded: DeadlineExceeded: ubuntu:22.04: - General - Docker Community Forums

После логина Sandbox сможет использовать Docker Hub, Registry и секреты.

Docker Documentation

Первый Sandbox

mkdir demo
cd demo

sbx run bash

Получаем shell внутри microVM.

Проверяем окружение

uname -a

docker version

docker info
Docker运行第一个HelloWorld+常用命令_docker run hello-world-CSDN博客
Docker Advanced: Working with Containers from the command line

How to Install Docker on Ubuntu 22.04 (Step-by-Step)

4

Обратите внимание:

  • Docker daemon работает.
  • /var/run/docker.sock отсутствует.
  • Engine расположен внутри VM. Docker Documentation

Что находится внутри Sandbox

How I Sandboxed My AI Coding Agent Using Docker Sandboxes
How I Sandboxed My AI Coding Agent Using Docker Sandboxes
Building AI Teams with Docker Sandboxes & Docker Agent | Docker
КаталогОписание
/workspaceВаш Git-проект.
/tmpВременные файлы.
/var/lib/dockerDocker images внутри Sandbox.
/root/.cacheКэш пакетов.

После удаления Sandbox всё исчезает.

Создание Docker образов внутри Sandbox

FROM alpine:3.22

RUN apk add curl git bash

CMD ["bash"]

Сборка.

docker build -t alpine-dev .

Запуск.

docker run --rm alpine-dev curl https://example.com
Docker Images Overview
Communication between containers: networking in Docker - Blog by Vincenzo Racca

Buildkit style output · Issue #873 · go-task/task · GitHub

4

BuildKit работает автоматически

DOCKER_BUILDKIT=1 docker build .

Можно использовать:

  • cache mounts;
  • multi-stage builds;
  • secrets;
  • SSH forwarding.
Docker 构建架构_Docker中文网
Smaller Docker Images, Better Security: Why Multi-Stage Builds Matter

构建容器镜像利器:BuildKit安装-CSDN博客

5

Docker Compose внутри Sandbox

docker-compose.yml

services:
  postgres:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: secret

  api:
    build: .
    depends_on:
      - postgres

Запуск.

docker compose up -d
Docker compose init — коллекция фото и изображений по теме | ДзенРус
Docker Compose | Cloud Administration & Security

Building a Multi-Tier Dockerized Application with MongoDB, Node.js, and React | by Olajide Salami | Medium

5

Все контейнеры существуют только внутри VM.

Подключаем Sandbox к GitLab CI

Архитектурная схема

Retrieve GitLab CI artifacts from child pipelines | by Alexander Chumakin | Medium

Устанавливаем Runner

GitLab Runner : optimisez vos pipelines CI/CD
iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

The Complete Gitlab CI/CD DevOps & Platform Engineering Master Guide: From Zero to Hero (Part 1/3) | by Salwan Mohamed | Medium

4

docker run -d \
 --name gitlab-runner \
 --restart always \
 -v gitlab-runner-config:/etc/gitlab-runner \
 -v /var/run/docker.sock:/var/run/docker.sock \
 gitlab/gitlab-runner:latest

Затем внутри Runner устанавливаем docker-sbx.

Можно использовать кастомный образ Runner.

Dockerfile Runner

FROM gitlab/gitlab-runner:alpine

RUN apk add bash curl git

RUN curl -fsSL https://get.docker.com | sh

RUN apk add docker-sbx

Регистрируем Runner

gitlab-runner register

Выбираем Docker Executor.

Пример .gitlab-ci.yml

stages:
  - build

variables:
  DOCKER_BUILDKIT: "1"

build-image:
  stage: build

  script:
    - sbx run -- docker build -t app:${CI_COMMIT_SHA} .

Именно sbx run создаёт Sandbox и выполняет команду внутри неё.

Docker Documentation

Публикация образа в GitLab Registry

publish:
  stage: build

  script:
    - sbx run -- docker login registry.gitlab.com \
        -u $CI_REGISTRY_USER \
        -p $CI_REGISTRY_PASSWORD

    - sbx run -- docker build \
        -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .

    - sbx run -- docker push \
        $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
How to use GitLab Container Registry - Knowledge Base of NFDI4Ing
How to use GitLab Container Registry - Knowledge Base of NFDI4Ing
Setup a Container Registry on GitLab :: NumPEx

Использование секретов

Docker добавил собственный менеджер секретов.

sbx secret set github --command "gh auth token"

sbx secret set npm --value "$NPM_TOKEN"

Использование.

sbx run bash

echo $NPM_TOKEN

Секрет появляется только внутри Sandbox.

Docker Documentation

sh - Cannot loop over files in /run/secrets in Docker - Stack Overflow
gh on Linux: Installation & Configuration - LinuxForDevices

Docker build secrets and private npm packages – Alexandra Ulsh

4

Настройка сетевых политик

Это одна из самых мощных возможностей.

Balanced режим

Firewall vs. Antivirus: Breaking Down the Differences - Palo Alto Networks
Docker Sandboxes | Sandboxes for Coding Agents | Docker
Cursor 2.5: Sandbox Network Access Controls - Release Discussions - Cursor - Community Forum

Проверяем.

sbx policy ls

Разрешаем Docker Hub.

sbx policy allow network registry-1.docker.io

Разрешаем GitLab.

sbx policy allow network gitlab.com

Open режим

sbx policy allow network "*"

Все сайты доступны.

Закрываем интернет полностью

sbx policy deny network "*"

Контейнер не сможет скачать пакеты.

Introducing nono: Kernel-Level Sandboxing for AI Agents: https://nono.sh 

I had been working on this in the background, but I rushed it out due to all the attacks hitting OpenClaw. We have already… | Luke Hinds | 17 comments
How to Fix "Connection Refused" Error | 3v-Hosting
What Nobody Told You About File Systems: Understanding FAT32, exFAT & NTFS in Minutes | by Chirangi Dodiya | Medium

Docker Documentation

Dashboard Sandboxes

Очень удобный TUI.

sbx
Get started | Docker Docs
Docker Sandboxes | Sandboxes for Coding Agents | Docker

Показывает:

  • CPU;
  • RAM;
  • контейнеры;
  • Sandbox;
  • сетевые запросы;
  • политики.

Docker Documentation

Несколько Sandbox одновременно

sbx run --name backend bash

sbx run --name frontend bash

sbx run --name tests bash
Get started | Docker Docs
Stop Running Agents in Containers. Run Them in MicroVMs with Docker sbx
Docker Sandboxes で実現する、コーディングエージェントの安全な自律実行 | DevOps Hub | SB C&S

Проверяем.

sbx ls

Работа с Git внутри Sandbox

Проект автоматически монтируется.

Home | codeblock-web-ide
Docker Sandboxes Tutorial and Cheatsheet

Git under the hood. Let’s explore some common Git commands… | by Wassim Chegham | We’ve moved to freeCodeCamp.org/news | Medium

5

git status

git checkout feature/api

git commit -m "New API"

Файлы появляются на хосте.

Использование Claude Code / Codex / Cursor Agent

Это одна из главных причин появления Sandbox.

Почему

AI получает Dangerous Mode.

Claude Code can just do things - Dane Grant
Unlocking the Codex harness: how we built the App Server | OpenAI

Setup Cursor CLI. You can now try out Power of Cursor CLI… | by Manjunath Janardhan | Data Science Collective | Medium

6

sbx run claude

или

sbx run codex

или

sbx run cursor-agent

Теперь агент может:

  • запускать Docker;
  • устанавливать пакеты;
  • удалять файлы;
  • выполнять shell-команды.

Но только внутри VM.

Docker Documentation+1

Использование Dangerous Mode безопасно

AI Agent Security: The Governance Crisis of 'God Mode' Access - Use This AI Blog

Docker специально рекомендует использовать Sandbox вместе с режимами --dangerously-skip-permissions и аналогичными режимами AI-агентов.

Andrew Lock | .NET Escapades+1

Интеграционные тесты PostgreSQL + Redis + RabbitMQ

supervisord - Docker, docker-compose application settings - Server Fault
Docker For Developers. Docker Django Stack | by Anurag Jain | Medium

Microservices with Node.js, Docker, and RabbitMQ | by Arjan Aswal | Apr, 2022  | Medium

4

integration:
  stage: test

  script:
    - sbx run -- docker compose up -d
    - sbx run -- pytest tests/

После завершения:

sbx rm integration

Кэширование зависимостей

Sandbox можно использовать совместно с GitLab Cache.

cache:
  paths:
    - .npm
    - .cache/pip
    - .gradle
How to make your Gitlab CI faster with Gitlab’s Cache | by Petru Rares Sincraian | Medium
Advanced Docker / BuildKit Caching with 5 tricks to speed up your image builds | AugmentedMind.de

4

Внутри Sandbox BuildKit использует собственный cache layer.

Declarative Sandbox Environment (.sbxenv.yaml)

Самая свежая возможность Docker Sandboxes.

Docker Documentation

Пример

name: dockerhosting-blog

agent: codex

workspace:
  path: .

env:
  NODE_ENV: development

ports:
  - 3000:3000

resources:
  cpu: 4
  memory: 8Gi

kits:
  - docker
  - node
  - python

registry:
  dockerhub: true

Запуск.

sbx env run
YAML Hub - Download and install on Windows | Microsoft Store
Building AI Teams with Docker Sandboxes & Docker Agent | Docker

How I Sandboxed My AI Coding Agent Using Docker Sandboxes

4

Теперь вся команда запускает идентичную Sandbox одной командой.

Ограничение CPU и памяти

sbx env create \
  --cpu 2 \
  --memory 4096
thắc mắc - Tận dụng laptop cũ làm server media tại nhà chạy 24/24 | VOZ
Master Pro Docker Techniques: A Best Practices Guide for Lean, Secure Containers | by Tayeblagha | Medium

PostgreSQL Docker and "No space left on device" - Leon Mika

5

Можно задавать лимиты для CI.

Проброс портов

ports:
  - 8080:8080
  - 5432:5432

Запуск приложения.

docker compose up
Port mapping or Port publishing in containers | by Jahnavi Reddy Kalathur | devsecops-community | Dec, 2025 | Medium
Create a simple Node.js Hello World Docker Container from scratch | by S3CloudHub | Medium

Docker : Run a React app in a docker - 2020

5

Работа с Kubernetes

Development & Debugging with Kubernetes | Apache Linkis
Using Kind to develop and test your Kubernetes deployments | by Martin Hodges | Medium

CI/CD Pipelines With Kubernetes in Docker (KinD) | Better Programming

4

Внутри Sandbox можно запускать:

kind create cluster

kubectl get pods

или

k3d cluster create

Полностью изолированный Kubernetes.

Использование Buildx Multi-Platform

ARMサーバーでDockerが動かない?multi-archビルド入門|中古パソコン屋のナベキンファクトリー
Build and Publish Multi-Architecture Docker Images | by Chathuranga Jayanath | Medium

Optimizing Multi-Architecture Docker Builds with GitLab CI and Buildx | by Farid Vosoughi | Medium

5

docker buildx create --use

docker buildx build \
 --platform linux/amd64,linux/arm64 \
 -t app:latest .

Sandbox отлично подходит для Buildx.

GitLab Matrix Build

build:
  parallel:
    matrix:
      - PLATFORM: linux/amd64
      - PLATFORM: linux/arm64

  script:
    - sbx run -- docker buildx build \
        --platform $PLATFORM .
Sharing Artifacts Between GitLab CI Matrix Jobs: React Build Example | by Michal Miler | uninterrupted engineering | Medium
Optimizing Multi-Architecture Docker Builds with GitLab CI and Buildx | by Farid Vosoughi | Medium

GitLab CI Pipeline for Go Projects

4

Очистка Sandbox

Показать список.

sbx ls

Удалить одну.

sbx rm backend

Удалить всё.

sbx prune
How To Clean Up Docker With Prune Commands Guide | Vultr Docs
Docker Cleanup: Learn to Remove Unused Images & Cache!
Docker Prune: 6 Easy Steps To Free Up Disk Space

Docker Sandbox vs Docker-in-Docker

Guide: Docker Inside Docker Containers (DIND) | by Prashanth M | Medium
How I Sandboxed My AI Coding Agent Using Docker Sandboxes

10 Things You Must Know About Docker Sandboxes

4

Docker-in-DockerDocker Sandbox
Требует privileged.Не требует доступа к Docker Socket.
Общий kernel.Собственный kernel.
Потенциальный breakout.MicroVM защищает хост.
Сложнее ограничить сеть.Гибкие политики сети.
Меньше изоляции секретов.Secrets управляются отдельно.

Производительность

Что показывает практика

Benchmarking containerd vs. dockerd: Performance, Efficiency, and Scalability | by khaled hadjali | NORMA | Medium
View Performance Dashboard
Docker high CPU consuption - General - Docker Community Forums
ОперацияОсобенности
Запуск SandboxОбычно 1–3 секунды.
Docker BuildПочти как BuildKit на хосте при использовании кэша.
ComposeПрактически без изменений.
AI AgentЕсть небольшая задержка на I/O.

Некоторые пользователи отмечают, что большие проекты могут работать медленнее из-за виртуализации файловой системы, хотя Docker продолжает оптимизировать производительность.

Andrew Lock | .NET Escapades+1

Практический Pipeline для dockerhosting.ru

stages:
  - lint
  - test
  - build
  - publish

variables:
  DOCKER_BUILDKIT: "1"

before_script:
  - sbx login --token $DOCKER_TOKEN

lint:
  stage: lint
  script:
    - sbx run -- npm ci
    - sbx run -- npm run lint

tests:
  stage: test
  script:
    - sbx run -- docker compose up -d postgres redis
    - sbx run -- pytest
    - sbx run -- docker compose down

build:
  stage: build
  script:
    - sbx run -- docker build \
        -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .

publish:
  stage: publish
  script:
    - sbx run -- docker login \
        registry.gitlab.com \
        -u $CI_REGISTRY_USER \
        -p $CI_REGISTRY_PASSWORD

    - sbx run -- docker push \
        $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
Automating Devops With Gitlab Ci/cd Pipelines | Detroit Chinatown

Безопасность Docker Sandboxes

Building AI Teams with Docker Sandboxes & Docker Agent | Docker
liveBook · Manning

MicroVMs - jmanteau

6

Что защищает Sandbox

МеханизмНазначение
MicroVMИзоляция ядра Linux.
NamespacesИзоляция процессов.
Network ProxyКонтроль доступа к интернету.
SecretsСекреты не сохраняются в VM.
Disposable filesystemУдаляется после завершения.

Docker позиционирует Sandboxes как безопасную среду для автономных AI-агентов и потенциально недоверенного кода.

Docker Documentation+1

Когда использовать Docker Sandbox в GitLab

СценарийРекомендация
Сборка Docker-образовДа.
BuildKit / BuildxДа.
Docker Compose интеграционные тестыДа.
AI Agent (Claude, Codex, Cursor)Да — один из основных сценариев.
Недоверенные Merge RequestДа — высокая степень изоляции.
Запуск Kind / K3d KubernetesДа.
Максимально быстрые локальные сборкиИногда быстрее остаётся обычный Docker Engine.

Итоги

Docker Sandboxes — это существенный шаг вперёд по сравнению с классическими схемами docker.sock и Docker-in-Docker. Вместо контейнера с общим ядром разработчик получает полностью изолированную microVM с собственным Docker Engine, управляемую через CLI sbx. Для GitLab CI это означает возможность безопасно собирать контейнеры, запускать Docker Compose, BuildKit, Kubernetes-in-Docker и AI-агентов без риска компрометации Runner-хоста. Новая возможность также добавляет сетевые политики, управление секретами и декларативные окружения через .sbxenv.yaml, что делает пайплайны воспроизводимыми и удобными для командной разработки.

Docker Documentation+2

Иллюстрации, использованные в статье

В статье предусмотрены схемы и изображения для публикации в блоге:

  1. Hero-баннер Docker Sandboxes.
  2. Архитектура Host → MicroVM → Docker Engine.
  3. Схема GitLab CI → Runner → Sandbox → Registry.
  4. Схема сетевой изоляции и Network Policy.
  5. BuildKit / Buildx внутри Sandbox.
  6. Docker Compose внутри Sandbox.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *