起因
某一天,小迅在逛podman文档的时候,偶然间发现
这玩意儿居然还能装在alpine里!?你要是说这个,俺可就不困了,搞起搞起
结果试试就逝世,没想到在alpine环境下,podman居然各种报错,算是把坑全给踩了一遍。好在经过几天的努力,也算是成功把podman跑了起来
配置流程
1、创建CT
镜像就直接选择最新的alpine-1.16
,接着创建CT,不要取消勾选无特权的容器
,开启嵌套
、FUSE
2、安装及配置
配置镜像源
1 | sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories |
安装podman
1 | apk add --no-cache podman |
解决cgroups问题
1 | echo 'rc_cgroup_mode="unified"' >> /etc/rc.conf |
重启
就是这么几行命令。然而,由于alpine系统精简的东西太多了,而且远程连接还需要自行安装openssh进行配置,稳定性没有保证。小迅不建议在生产环境像这样用
问题及解决方式
- 报错:
1 | ERRO[0000] 'overlay' is not supported over zfs at "/var/lib/containers/storage/overlay" |
这个问题发生在zfs系统上,但是不用慌张,第一次调用的时候有可能是因为overlay没有挂载好,但实际上再次执行就不会报错了。如果解决不了,也可以像小迅一样,把PVE的系统盘换成ZFS格式
- 报错:
1 | Error: initializing source docker://hello-world:latest: pingingcontainer registry registry-1.docker.io: Get "https://registry-1docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192.168.71:53: read udp 192.168.7.144:58955->192.168.7.1:53: i/o timeout |
很简单,配置一下镜像源就ok了
1 | cat > /etc/containers/registries.conf <<EOF |
- 报错:
1 | Error: OCI runtime error: crun: writing file \`/sys/fs/cgroup/libpod_parent/libpod-6bdf181a8f2e15dc7dcb0a6b335608e97e1f2f9a30c48f40e0c8d1cf70bb19e4/cgroup.procs`: Not supported |
这个问题是由于alpine默认不启用cgroups v2
引起的,修改/etc/rc.conf
文件,设置rc_cgroup_mode="unified"
重启容器
- 报错:
1 | Error: OCI runtime error: crun: the requested cgroup controller `pids` is not available |
pid限制。修改/etc/containers/containers.conf
文件,设置pids_limit = 0
- 警告:
1 | WARN[0000] Failed to add conmon to cgroupfs sandbox cgroup: error creating cgroup path /libpod_parent/conmon: write /sys/fs/cgroup/cgroup.subtree_control: device or resource busy |
众所周知,WARN不影响程序运行,所以不用管它
1 | mkdir /sys/fs/cgroup/runtime |
参考资料
Podman Installation Instructions
Cannot use podman inside lxc with nesting enabled
enabling cgroups v2
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章