Docker2exe — ваш Docker-образ в одном исполняемом файле

06 May, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

2,211
🔱 108
👥 17

Представьте, что вам нужно поделиться приложением в Docker-контейнере с коллегой, у которого нет времени (или желания) разбираться с docker-compose и командами CLI. Знакомая ситуация? Именно для таких случаев создан docker2exe — инструмент, который упаковывает ваш Docker-образ в удобный исполняемый файл.

Что это за инструмент?

docker2exe — это утилита на Go, которая:

  1. Берет ваш Docker-образ
  2. Превращает его в самостоятельный исполняемый файл
  3. Позволяет запускать контейнер простым кликом

Причем получатель файла даже не обязан быть Docker-гуру — если у него установлен Docker, всё заработает автоматически.

Как это работает на практике?

Допустим, у вас есть образ alpine:3.9. Всего три команды — и вы получаете исполняемый файл:

docker2exe --name alpine --image alpine:3.9

На выходе — три файла для разных платформ:

Реклама
dist/
├── alpine-darwin-amd64
├── alpine-linux-amd64
├── alpine-windows-amd64

Получатель просто запускает файл — и docker2exe:

  1. Проверит наличие образа в системе
  2. При необходимости скачает его автоматически
  3. Запустит контейнер

Главные фишки docker2exe

1. Кроссплатформенность

Одна команда — и вы получаете бинарники под все основные ОС. Не нужно беспокоиться о совместимости.

2. Встроенные образы (Embedded Mode)

Для небольших образов можно включить режим встраивания:

docker2exe --name alpine --image alpine:3.9 --embed

В этом случае образ запаковывается прямо в исполняемый файл (как в примере с alpine — итоговый размер менее 10MB). При запуске:

  • Если образа нет в системе — загрузит из встроенного архива
  • Если есть — использует локальную версию

3. Минимальные требования

На стороне получателя нужен только Docker. Никаких дополнительных зависимостей.

Когда это полезно?

  • Демонстрация прототипов — отправили exe-файл, клиент запустил одним кликом
  • Распространение внутренних утилит в компании
  • Быстрое тестирование — не нужно объяснять коллегам, как запускать контейнер
  • Создание портативных версий приложений

Под капотом

Технически docker2exe:

  1. Использует docker save для экспорта образа
  2. Применяет gzip для сжатия (в embedded mode)
  3. Генерирует Go-код, который управляет Docker CLI

Интересно, что сам инструмент написан на Go и распространяется как единый бинарный файл — ирония судьбы!

Вывод: стоит ли пробовать?

Если вы:

  • Часто делитесь Docker-образами с коллегами
  • Хотите упростить процесс запуска для не-технических пользователей
  • Работаете с небольшими образами (для больших лучше использовать классический Docker Registry)

...то docker2exe сэкономит вам кучу времени на объяснениях и настройках. Проект с открытым исходным кодом, 1.6k звезд на GitHub — определённо заслуживает внимания.

Для начала попробуйте с простым образом (типа alpine), как в примере выше — и вы сразу оцените удобство подхода. А там, глядишь, и в рабочие процессы внедрите!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.