需要部署一套 CMS 系统,服务器上的容器运行时是 Podman,故执行命令:
$ podman run --name directus --rm --userns=keep-id --user node \
-p 8055:8055 \
--mount type=bind,src=/opt/d/database,dst=/directus/database,U=true,relabel=shared \
--mount type=bind,src=/opt/d/uploads,dst=/directus/uploads,U=true,relabel=shared \
....
docker.io/directus/directus:10.10.5
若干分钟后容器还没有成功运行起来,也没有任何输出。执行 podman 相关的命令,程序无响应,查看系统的资源占用,没发现其他异常。
搜索发现有人提出了同样的问题,不过我的情况有些不一样,只要去掉挂载卷的动作,执行的时间似乎就能显著缩短。
$ time podman run --rm --userns=keep-id docker.io/directus/directus:10.10.5
real 0m22.637s
user 0m0.119s
sys 0m0.066s
按照 slow (minutes delay) start when rinning with --userns=keep-id #11220 的说法,Podman 在设置 --userns=keep-id
时会对实际的存储层做 chown
操作,也许这个动作造成了启动缓慢。
此外帖子还建议对 $HOME/.config/containers/storage.conf
进行修改:
[storage]
driver = "overlay"
[storage.options.overlay]
mount_program = "/usr/bin/fuse-overlayfs"
服务器上没有这个文件,所以实际生效的应该是 /etc/containers/storage.conf
。顺便一提,如果使用的 Rootful 模式,/usr/share/containers/storage.conf
中的配置具有更高的优先级。