rootless podman 的初始配置
目标
专用用户podster从头开始配置用于的rootless podman环境,podman info进行验证。
为什么重要
rootless podman 的设置比安装更重要。/etc/subuid如果没有带宽,就进入单一UID模式,安静地还原,只有在特定图像中才会出现权限错误,需要几天时间才能找到原因。graphroot如果不确认的话,主分区会填满,服务会停止。unqualified-search-registries如果不放入的话,在docker上正常运行的脚本在podman上找不到映像。
这个实训的检查清单是在实际工作中在新的服务器上设置rootless podman时直接使用的顺序。
阶段
/root/pod创建目录,用户podster的uid gid 홈경로用空格区分,在一行/root/pod/user.txt请写在上面。/etc/subuid在podster请分配给开始100000,数量65536个代理。/etc/subgid请分配与EDO相同的代役。/root/pod/mapping.txt请用以下3行组成。CONTAINER_0=<컨테이너 안 UID 0 에 대응하는 호스트 UID>/CONTAINER_1=<컨테이너 안 UID 1 의 호스트 UID>/CONTAINER_1000=<컨테이너 안 UID 1000 의 호스트 UID>/home/podster/.config/containers/storage.conf请制作。[storage]在章节中driver,runroot,graphroot必须有三个身高,graphroot是/home/podster/.local/share/containers/storage需要。文件所有者是podster必须是。/home/podster/.config/containers/registries.conf请制作。unqualified-search-registries在docker.io必须包含,docker.io购买内部镜子mirror.labhub.local/dockerhub发送到[[registry]]必须有块。文件所有者podster必须是。podster根据授权podman info执行后得到结果/root/pod/info.json请保存为。必须是JSON格式graphRoot值必须是5次指定的路径。/root/pod/checklist.txt请用以下5行组成。SUBUID=yes/SUBGID=yes/ROOTLESS=<info 의 rootless 값 true/false>/GRAPHROOT=<info 의 graphRoot 값>/DRIVER=<info 의 스토리지 드라이버 이름>
参考
- subuid分配是
usermod --add-subuids 100000-165535 podster或者/etc/subuid追加一行。 - 用户权限执行是
su - podster -c 'podman info --format json'是形状。 - JSON解析包括
jq可以使用。例如:jq -r '.store.graphRoot' /root/pod/info.json - 创建设置目录后
chown -R podster:podster /home/podster/.config请不要忘记。 - 常见的错误1:在第4次计算容器UID1为100001时。频段的第一个值对应UID1。
- 常见的错误2:设置文件设置为root所有权,导致podster无法读取。
确认对象用户
/root/pod创建目录,用户podster的uid gid 홈경로用空格区分,在一行/root/pod/user.txt请写在上面。
可以通过id命令确认uid、gid、主目录。getent passwd也很有用。
subuid频段分配
/etc/subuid在podster请分配给开始100000,数量65536个代理。
格式是用户:开始UID:数量。也可以用usermod,也可以直接编辑文件。
subgid 频段分配
/etc/subgid请分配与EDO相同的代役。
是和subuid一样的格式。GID也出于同样的原因需要带宽。
映射计算
/root/pod/mapping.txt请用以下3行组成。
CONTAINER_0=<컨테이너 안 UID 0 에 대응하는 호스트 UID>/CONTAINER_1=<컨테이너 안 UID 1 의 호스트 UID>/CONTAINER_1000=<컨테이너 안 UID 1000 의 호스트 UID>
容器内的UID 0映射到用户本人,1开始是频段的开始。请小心偏移量。
编写storage.conf
/home/podster/.config/containers/storage.conf请制作。[storage]在章节中driver,runroot,graphroot必须有三个身高,graphroot是/home/podster/.local/share/containers/storage需要。文件所有者是podster必须是。
每个用户的设置放在主页下面的.config/containers中。[storage]部分需要三个键。
编写registries.conf
/home/podster/.config/containers/registries.conf请制作。unqualified-search-registries在docker.io必须包含,docker.io购买内部镜子mirror.labhub.local/dockerhub发送到[[registry]]必须有块。文件所有者podster必须是。
unqualified搜索列表是数组,镜像写入[[registry]]块。prefix和location是配对的。
用podman info进行验证
podster根据授权podman info执行后得到结果/root/pod/info.json请保存为。必须是JSON格式graphRoot值必须是5次指定的路径。
必须以该用户权限执行才能反映每个用户的设置。建议使用su -打开登录shell,以确保安全。
初始设置检查清单
/root/pod/checklist.txt请用以下5行组成。
SUBUID=yes/SUBGID=yes/ROOTLESS=<info 의 rootless 값 true/false>/GRAPHROOT=<info 의 graphRoot 값>/DRIVER=<info 의 스토리지 드라이버 이름>
请收集在前一步确认的实际值。路径绝对写成绝对路径。