Блокировка Docker в России: причины и альтернативы

Docker Inc. ограничила доступ к своим сервисам, в том числе к Docker Hub, для пользователей из России и Беларуси. Для команд, которые тянут образы с Hub, обновляют engine/desktop и опираются на официальные registry, это ломает привычный CI/CD и деплой.

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

Почему доступ ограничили

Официальная линия – соблюдение международных санкций и экспортных ограничений. Западные вендоры в IT массово режут продажи, аккаунты и облачные сервисы для ряда юрисдикций, чтобы не попасть под штрафы у себя. Docker в этом ряду не уникален: похожие ограничения касались и других SaaS и registry.

Актуальные заявления и changelog по политике доступа смотрите на блоге Docker и в документации Docker Hub (условия могут меняться).

Что ломается у разработчиков

  • Docker Hub – pull/push образов, rate limits, login, official images. Без зеркала pipeline падает на docker pull.
  • Обновления и поддержка – сложнее получать пакеты Desktop, документацию и платные планы; на self-hosted engine критичнее именно Hub, чем сам runtime.
  • Зависимость от base-образов – многие Dockerfile начинаются с FROM nginx:... / node:... с Hub; без кэша или mirror сборка останавливается.
  • Время и риск – срочный поиск зеркал, перепись registry URL, аудит лицензий и происхождения образов.

Альтернативы и смежные инструменты

«Docker» часто путают с тремя разными слоями: runtime, registry и оркестратор. Резать нужно то, что реально недоступно.

Podman

Podman – OCI-совместимый runtime без обязательного root-демона. CLI близкий к Docker (podman build/run/pull), хорошо стыкуется с systemd и rootless. Образы те же OCI: registry может быть любой (Quay, GHCR, self-hosted).

Kubernetes (containerd / CRI-O)

Kubernetes – не «замена Docker Desktop», а оркестрация. В современных кластерах runtime – containerd или CRI-O, Docker engine не обязателен. Имеет смысл, если уже есть или нужен кластер; для локальной разработки одного сервиса это избыточно.

LXC / LXD (Incus)

LXC/LXD (и форк Incus) – системные контейнеры ближе к «лёгкой ВМ», чем к app-container Docker. Удобны для изоляции окружений и сервисов на хосте, но это другой operational model, не drop-in для Docker Compose.

Свой registry

Harbor, GitLab Container Registry, Nexus, distribution (registry:2) – хранение своих сборок и прокси/кэш внешних base-образов. Снимает зависимость от одного публичного Hub.

Рабочие подходы

  • Зеркала и pull-through cache – корпоративный proxy-registry кэширует base-образы; CI ходит только во внутренний endpoint.
  • Локальный кэш образов – на build-агентах держать часто используемые base-слои; не собирать «с нуля из интернета» на каждый пайплайн.
  • Мульти-registry – дублировать критичные образы (GHCR, Quay, внутренний Harbor), в Dockerfile/compose – переменные registry prefix.
  • Меньше vendor lock-in – OCI-стандарты, Podman/buildah/buildkit, не привязываться к Docker Hub как к единственному источнику.
  • Сеть и доступ – часть команд использует VPN или прокси для доступа к зарубежным registry; это отдельная организационная и юридическая зона ответственности компании, не «магия в Dockerfile».

Пример смены префикса registry (идея, не привязка к конкретному зеркалу):

# вместо
# docker pull nginx:1.25
# использовать свой mirror/proxy (URL задаёте вы):
docker pull registry.example.internal/library/nginx:1.25

# Podman аналогично
podman pull registry.example.internal/library/nginx:1.25

Кратко

Ограничения Docker-сервисов для RU/BY – следствие санкционной политики вендора, а не «поломки Linux-контейнеров». Runtime (engine, Podman, containerd) можно держать, а вот registry и SaaS нужно планировать: зеркала, свой Harbor, OCI-альтернативы, меньше зависимости от одного Hub. Следите за официальными заявлениями Docker и политикой доступа вашего registry.

Источники и ссылки


Комментарии загружаются…