<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Yuriy Gavrilov: posts tagged VM</title>
<link>https://gavrilov.info/tags/vm/</link>
<description>Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov</description>
<author></author>
<language>en</language>
<generator>Aegea 11.4 (v4171e)</generator>

<itunes:owner>
<itunes:name></itunes:name>
<itunes:email>yvgavrilov@gmail.com</itunes:email>
</itunes:owner>
<itunes:subtitle>Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov</itunes:subtitle>
<itunes:image href="https://gavrilov.info/pictures/userpic/userpic-square@2x.jpg?1643451008" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Lima: Глубокий анализ. От замены Docker Desktop до связки с Podman</title>
<guid isPermaLink="false">277</guid>
<link>https://gavrilov.info/all/lima-glubokiy-analiz-ot-zameny-docker-desktop-do-svyazki-s-podma/</link>
<pubDate>Fri, 05 Sep 2025 00:41:39 +0300</pubDate>
<author></author>
<comments>https://gavrilov.info/all/lima-glubokiy-analiz-ot-zameny-docker-desktop-do-svyazki-s-podma/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/Snimok-ekrana-2025-09-04-v-23.47.11.png" width="1382" height="502" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;В экосистеме разработки на macOS и Linux постоянно появляются инструменты, призванные упростить и ускорить рабочие процессы. Один из таких инструментов, быстро набравший популярность — &lt;b&gt;Lima&lt;/b&gt;. Изначально созданный как простой способ запускать &lt;b&gt;Li&lt;/b&gt;nux на &lt;b&gt;Ma&lt;/b&gt;c, Lima превратился в мощное и гибкое решение для управления виртуальными машинами, с особым фокусом на контейнеризацию.&lt;/p&gt;
&lt;p&gt;В этой статье мы разберем, что такое Lima, для чего он нужен, сравним его с аналогами, раскроем полезные трюки и фишки, а также проанализируем, как и когда его стоит использовать в связке с Podman.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/demo-1.gif" width="1194" height="781" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Не большой бонус от Kimi 2.0: &lt;a href="https://a.gavrilov.info/data/posts/lima.html"&gt;lima от kimi 2.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;А вот полный отчет в режиме Research: &lt;a href="https://a.gavrilov.info/data/posts/Lima_deep_research_by_kimi_2.0.pdf"&gt;Lima анализ от kimi 2.0.pdf&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;1. Назначение Lima: Больше, чем просто виртуальная машина&lt;/h4&gt;
&lt;p&gt;Lima — это утилита командной строки (CLI), которая упрощает создание и управление Linux-виртуальными машинами, преимущественно на macOS, но также и на Linux. Его основная философия — минимализм и ориентация на разработчика &lt;a href="https://signup.omerxx.com/posts/limavm-is-probably-the-best-macos-virtual-machine-i-ve-ever-used"&gt;signup.omerxx.com&lt;/a&gt;. Lima не навязывает громоздкие графические интерфейсы, а предоставляет простой и понятный CLI, который “не мешает работать”.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Основные сценарии использования Lima:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Запуск контейнеров:&lt;/b&gt; Lima поставляется с предустановленным `containerd` и его CLI-клиентом `nerdctl` (совместимым по командам с Docker). Это позволяет запускать OCI-контейнеры “из коробки”.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Альтернатива Docker Desktop:&lt;/b&gt; Многие разработчики переходят на Lima, чтобы избежать лицензионных ограничений Docker Desktop и получить более легковесное и производительное решение &lt;a href="https://spiffyeight77.com/posts/all/2024/11/replacing-docker-desktop-on-macos-with-lima"&gt;spiffyeight77.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Тестирование в среде Linux:&lt;/b&gt; Запуск изолированной и чистой Linux-среды для сборки, тестирования или отладки приложений.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Работа с Kubernetes:&lt;/b&gt; Lima имеет шаблоны для быстрого развертывания легковесных дистрибутивов Kubernetes, таких как k3s или k8s.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Запуск любых дистрибутивов Linux:&lt;/b&gt; Lima позволяет легко запускать различные дистрибутивы, от Ubuntu и Debian до Arch Linux и Fedora, что делает его универсальным инструментом для исследования Linux-экосистемы &lt;a href="https://sredevops.org/en/lima-the-easiest-way-to-run-any-linux-distro-kubernetes-k3s-and-even-docker-on-macos-and-linux-apple-silicon-m1-arm64-compatible"&gt;sredevops.org&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. Ключевые преимущества и сравнение с аналогами&lt;/h4&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Критерий&lt;/td&gt;
&lt;td style="text-align: center"&gt;Lima&lt;/td&gt;
&lt;td style="text-align: center"&gt;Docker Desktop (на macOS)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Vagrant&lt;/td&gt;
&lt;td style="text-align: center"&gt;Multipass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Философия&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Легковесный CLI-инструмент для запуска Linux VM с фокусом на контейнеры.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Комплексный продукт с GUI для управления контейнерами.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Универсальный менеджер VM для создания воспроизводимых сред.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Быстрый запуск VM с Ubuntu, разрабатываемый Canonical.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Лицензия&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Open Source (MIT)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Коммерческая для крупных компаний.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Open Source (MIT)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Open Source (GPLv3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Производительность&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Высокая, особенно с `virtiofs` и `vz`. Низкое потребление ресурсов.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Более ресурсоемкий, особенно GUI и фоновые процессы.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Зависит от провайдера, часто более медленный запуск.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Оптимизирована для Ubuntu, производительность хорошая.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Гибкость&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Очень высокая. Настройка через YAML, поддержка любых дистрибутивов.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Ограниченная. Вы привязаны к VM от Docker.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Высокая. Поддержка разных провайдеров (VirtualBox, VMware).&lt;/td&gt;
&lt;td style="text-align: center"&gt;Ограниченная. В основном ориентирован на Ubuntu.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Простота&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Просто начать, но требует понимания CLI и YAML для кастомизации.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Очень просто для новичков благодаря GUI.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Требует изучения `Vagrantfile` (Ruby).&lt;/td&gt;
&lt;td style="text-align: center"&gt;Очень простой CLI для базовых задач.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Интеграция&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Отличная интеграция с хост-системой (файлы, порты), но требует ручной настройки.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Глубокая, бесшовная интеграция “из коробки”.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Хорошая, но настройка может быть сложной.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Простая, но менее гибкая интеграция.&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;Lima vs. Docker Desktop&lt;/b&gt; — это главное сравнение для пользователей macOS. Lima выигрывает в производительности, гибкости и отсутствии лицензионных ограничений. Docker Desktop предлагает удобство “всё в одном” и графический интерфейс, что может быть предпочтительнее для новичков или в корпоративных средах, где стандартизирован один инструмент.&lt;/p&gt;
&lt;h4&gt;3. Трюки и фишки: Максимизируем пользу от Lima&lt;/h4&gt;
&lt;p&gt;Вся мощь Lima раскрывается через его декларативный файл конфигурации `lima.yaml`. Вот несколько ключевых возможностей, которые стоит использовать.&lt;/p&gt;
&lt;h5&gt;1. Шаблоны для быстрого старта&lt;/h5&gt;
&lt;p&gt;Вместо создания `YAML`-файла с нуля, можно использовать готовые шаблоны. Это самый быстрый способ начать работу.&lt;/p&gt;
&lt;h2&gt;Запустить VM с поддержкой Docker&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;limactl start template://docker&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Запустить VM с Podman&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;limactl start template://podman&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Запустить Arch Linux&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;limactl start template://archlinux&lt;/code&gt;&lt;/pre&gt;&lt;h5&gt;2. Выбор движка виртуализации на macOS&lt;/h5&gt;
&lt;p&gt;На macOS с Apple Silicon (M1/M2/M3) Lima может использовать нативный фреймворк виртуализации от Apple вместо QEMU. Это значительно снижает нагрузку на CPU и повышает производительность &lt;a href="https://code.saghul.net/2025/02/migrating-from-docker-desktop-to-colima-2025-update"&gt;code.saghul.net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Для этого в вашем `lima.yaml` укажите:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vmType: &amp;quot;vz&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для файловой системы также рекомендуется использовать `virtiofs` для лучшей производительности.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mountType: &amp;quot;virtiofs&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;h5&gt;3. Гибкий файловый шаринг&lt;/h5&gt;
&lt;p&gt;Lima позволяет монтировать директории с хост-машины в VM. Вы можете указать, какие папки монтировать и доступны ли они для записи.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mounts:
  - location: &amp;quot;~&amp;quot;
    writable: false
  - location: &amp;quot;~/projects&amp;quot;
    writable: true&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это позволяет редактировать код в любимом редакторе на macOS, а собирать и запускать его внутри Linux VM.&lt;/p&gt;
&lt;h5&gt;4. Проброс портов&lt;/h5&gt;
&lt;p&gt;Чтобы получить доступ к сервису, запущенному внутри VM, можно пробросить порты.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;portForwards:
  # Пробросить порт 8080 из гостевой VM на порт 8080 хоста
  - guestPort: 8080
    hostPort: 8080
  # Можно также указать конкретный IP
  - guestPort: 8888
    hostIP: &amp;quot;127.0.0.1&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;h5&gt;5. Скрипты инициализации (`provision`)&lt;/h5&gt;
&lt;p&gt;Это одна из самых мощных функций. Вы можете выполнять скрипты при первом создании VM (`mode: system`) или при каждом её запуске (`mode: user`).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;provision:
  - mode: system
    script: |
      #!/bin/bash
      apt-get update
      apt-get install -y htop vim fish
  - mode: user
    script: |
      #!/bin/bash
      echo &amp;quot;Welcome back to Lima!&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это позволяет полностью автоматизировать настройку вашего рабочего окружения.&lt;/p&gt;
&lt;h4&gt;4. Lima и Podman: Синергия или избыточность?&lt;/h4&gt;
&lt;p&gt;Этот вопрос часто возникает у разработчиков. &lt;b&gt;Podman&lt;/b&gt; — это альтернатива Docker для работы с контейнерами без демона. На Linux он работает нативно. На macOS ему, как и Docker, нужна Linux-виртуальная машина.&lt;/p&gt;
&lt;p&gt;`podman machine` — это встроенная в Podman команда, которая автоматически создает и управляет такой VM. Так зачем же здесь Lima?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Случай 1: Когда достаточно `podman machine`&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Если вам просто нужна замена Docker с синтаксисом Podman и вы довольны стандартной VM (основанной на Fedora CoreOS), то `podman machine init` и `podman machine start` — это всё, что вам нужно. Это простое, интегрированное решение.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Случай 2: Когда нужна связка Lima + Podman&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Связка Lima и Podman даёт &lt;b&gt;контроль и гибкость&lt;/b&gt;. Вы используете Lima для создания и управления VM, а Podman-клиент на macOS настраиваете для работы с Podman-сервисом внутри этой VM.&lt;/p&gt;
&lt;p&gt;Это необходимо, когда:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;&lt;b&gt;Нужен конкретный дистрибутив Linux:&lt;/b&gt; Ваше приложение требует Ubuntu, CentOS, или Debian, а не Fedora CoreOS, которую использует `podman machine`. С Lima вы можете создать VM на базе любого дистрибутива, установить туда Podman и работать с ним.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Требуется тонкая настройка VM:&lt;/b&gt; Вам нужно выделить точное количество ядер CPU, памяти, настроить сложную сетевую конфигурацию или использовать специфические параметры монтирования. `lima.yaml` предоставляет полный контроль над этими параметрами.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Нужны дополнительные сервисы в VM:&lt;/b&gt; Вы хотите запустить в той же VM не только Podman, но и, например, базу данных, Redis или GitLab Runner &lt;a href="https://nakame.dev/infra/lima-vm/"&gt;nakame.dev&lt;/a&gt;. С помощью `provision` скриптов в Lima это легко автоматизировать в рамках одной конфигурации.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Унификация окружения:&lt;/b&gt; Вы уже используете Lima для других задач (например, для k3s) и хотите управлять всеми вашими VM единообразно через `limactl`.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Как это работает на практике?&lt;/b&gt;&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Создается `lima.yaml` на основе шаблона `podman` или с нуля.&lt;/li&gt;
&lt;li&gt;В `provision` скрипте устанавливается `podman`.&lt;/li&gt;
&lt;li&gt;Запускается VM: `limactl start ./my-podman-vm.yaml`.&lt;/li&gt;
&lt;li&gt;Podman-клиент на macOS настраивается на подключение к сокету внутри Lima VM.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Итог по связке:&lt;/b&gt; Lima и `podman machine` не являются прямыми конкурентами. `podman machine` — это простое решение “под ключ”. &lt;b&gt;Lima — это мощный бэкенд&lt;/b&gt;, который может служить основой для Podman, когда стандартных возможностей `podman machine` недостаточно.&lt;/p&gt;
&lt;h4&gt;5. Заключение&lt;/h4&gt;
&lt;p&gt;Lima зарекомендовал себя как незаменимый инструмент для разработчиков на macOS и Linux. Он успешно занял нишу между тяжеловесными решениями вроде Vagrant и монолитными продуктами, как Docker Desktop.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ключевые выводы:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Для пользователей macOS:&lt;/b&gt; Lima — это быстрая, легковесная и бесплатная альтернатива Docker Desktop, предлагающая больше гибкости и контроля над средой исполнения контейнеров.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Производительность:&lt;/b&gt; Благодаря поддержке нативной виртуализации Apple (`vz`) и эффективных файловых систем (`virtiofs`), Lima обеспечивает почти нативную производительность.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Гибкость:&lt;/b&gt; Конфигурация через YAML, шаблоны и скрипты инициализации позволяют создать идеально настроенную и воспроизводимую среду для любого проекта.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Экосистема:&lt;/b&gt; Lima — это не просто VM, а платформа, на которой могут работать другие инструменты, такие как Podman, k3s, Docker, предоставляя им настраиваемое и оптимизированное Linux-окружение.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Если вы разработчик, который ценит контроль, производительность и предпочитает работать в командной строке, Lima определенно заслуживает вашего внимания. Это мощный мост в мир Linux, встроенный прямо в ваш терминал.&lt;/p&gt;
</description>
</item>


</channel>
</rss>