<?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>M9K blog: заметки с тегом podman</title>
<link>https://blog.m9k.space/tags/podman/</link>
<description>Заметки обо всём: devops, lifestyle, культура.</description>
<author>M</author>
<language>ru</language>
<generator>E2 (v3877; Aegea)</generator>

<itunes:owner>
<itunes:name>M</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Заметки обо всём: devops, lifestyle, культура.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Rootless Podman внутри Proxmox LXC: проблема UID/GID mapping</title>
<guid isPermaLink="false">240</guid>
<link>https://blog.m9k.space/all/rootless-podman-vnutri-proxmox-lxc-problema-uid-gid-mapping/</link>
<pubDate>Sat, 19 Sep 2026 07:29:49 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/rootless-podman-vnutri-proxmox-lxc-problema-uid-gid-mapping/</comments>
<description>
&lt;p&gt;При запуске File Browser через rootless Podman образ скачивался, но распаковка завершалась ошибкой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;potentially insufficient UIDs or GIDs available in user namespace (requested 65534:65534)&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;lchown /home: invalid argument&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Причина: пользователю podman выделено только 50 000 subordinate UID/GID. Образ содержит файлы с UID/GID 65534, которые не помещаются в доступный диапазон.&lt;/p&gt;
&lt;p&gt;Механизм&lt;/p&gt;
&lt;p&gt;Используются два уровня отображения идентификаторов:&lt;br /&gt;
Podman: UID/GID образа → UID/GID внутри Debian LXC.&lt;br /&gt;
LXC: UID/GID Debian → UID/GID хоста Proxmox.&lt;/p&gt;
&lt;p&gt;Настройки Podman определяются файлами /etc/subuid и /etc/subgid. Внешний mapping LXC задаётся через lxc.idmap.&lt;/p&gt;
&lt;p&gt;Исходная конфигурация Proxmox:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;root:100000:65536&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;deploy:165536:65536&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Непривилегированному LXC доступны 65 536 идентификаторов. Расширить диапазон непрерывно нельзя: следующие идентификаторы уже выделены пользователю deploy.&lt;/p&gt;
&lt;p&gt;Решение:&lt;/p&gt;
&lt;p&gt;Выделить свободный диапазон на Proxmox и добавить его в /etc/subuid и /etc/subgid хоста:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;root:231072:15536&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В конфигурации LXC сохранить исходное отображение и добавить новое:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;lxc.idmap: u 0 100000 65536&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;lxc.idmap: g 0 100000 65536&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;lxc.idmap: u 65536 231072 15536&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;lxc.idmap: g 65536 231072 15536&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Внутри LXC контейнера дополнить существующий диапазон пользователя podman:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;podman:10000:50000&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;podman:65536:15536&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Настроить аналогично UID и GID, предварительно проверив отсутствие пересечений с другими диапазонами. После остановки приложений перезапустить LXC и выполнить:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;podman system migrate&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Изменение mapping не переносит владельцев существующих файлов автоматически.&lt;/p&gt;
</description>
</item>

<item>
<title>Proxmox 7: включение Docker и Podman в LXC</title>
<guid isPermaLink="false">239</guid>
<link>https://blog.m9k.space/all/proxmox-7-vklyuchenie-docker-i-podman-v-lxc/</link>
<pubDate>Sat, 19 Sep 2026 03:20:57 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/proxmox-7-vklyuchenie-docker-i-podman-v-lxc/</comments>
<description>
&lt;p&gt;Для запуска Docker или Podman внутри LXC-контейнера необходимо активировать дополнительные возможности: nesting, keyctl и fuse.&lt;/p&gt;
&lt;p&gt;Скрипт запрашивает ID контейнера, проверяет наличие конфигурации, создаёт резервную копию с меткой времени и включает необходимые параметры. Остальные настройки features сохраняются.&lt;/p&gt;
&lt;p&gt;Запускать от root на хосте Proxmox.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

read -rp &amp;quot;Введите ID контейнера (CTID): &amp;quot; CTID

if [[ ! &amp;quot;$CTID&amp;quot; =~ ^[0-9]+$ || ! -f &amp;quot;/etc/pve/lxc/${CTID}.conf&amp;quot; ]]; then
    echo &amp;quot;Ошибка: некорректный CTID или конфигурация не найдена&amp;quot;
    exit 1
fi

CONF=&amp;quot;/etc/pve/lxc/${CTID}.conf&amp;quot;
BACKUP_DIR=&amp;quot;/root/lxc-config-backups&amp;quot;

mkdir -p &amp;quot;$BACKUP_DIR&amp;quot; &amp;amp;&amp;amp;
cp &amp;quot;$CONF&amp;quot; &amp;quot;$BACKUP_DIR/${CTID}.conf.$(date +%Y%m%d_%H%M%S).bak&amp;quot; &amp;amp;&amp;amp;
pct set &amp;quot;$CTID&amp;quot; --features &amp;quot;$(awk -F, '/^features:/{sub(/^features:[[:space:]]*/, &amp;quot;&amp;quot;); for(i=1;i&amp;lt;=NF;i++) if($i !~ /^(nesting|keyctl|fuse)=/) printf &amp;quot;%s,&amp;quot;, $i} END{print &amp;quot;nesting=1,keyctl=1,fuse=1&amp;quot;}' &amp;quot;$CONF&amp;quot;)&amp;quot; &amp;amp;&amp;amp;
pct config &amp;quot;$CTID&amp;quot; | grep '^features:'&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Пример выполнения:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Введите ID контейнера (CTID): 177
features: fuse=1,keyctl=1,nesting=1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Резервная копия конфигурации сохраняется в /root/lxc-config-backups/.&lt;/p&gt;
&lt;p&gt;После изменения параметров необходимо полностью остановить и запустить контейнер:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;pct stop 177 &amp;amp;&amp;amp; pct start 177&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>