运行 容器化 MongoDB 绑定挂载

Running containerized MongoDB with bind mount

我在 OCI 容器中 运行 MongoDB (docker.io/library/mongo)。我想在 /data/db 的容器内挂载一个主机目录(用 Kubernetes 的说法是 hostPath 挂载)。我在 Fedora Silverblue 上使用 Podman(具有相同 CLI 的 Docker 替代方案),但我认为问题不在于 Podman 或 Silverblue 不兼容。

使用:

podman run --name container_name -p=27017:27017 --mount type=bind,source=/path/to/dir,target=/data/db -d mongo

podman run --name container_name -p=27017:27017 -v /path/to/dir:/data/db -d mongo

容器退出并显示以下日志:

cannot configure rootless cgroup using the cgroupfs manager
find: '/data/db': Permission denied
chown: changing ownership of '/data/db': Permission denied

容器中 mongo 用户的用户 ID 为 999,我已尝试将主机目录更改为该用户,但这没有帮助。我也曾尝试将主机的文件夹设置为具有全局 r/w 访问权限,但这同样无济于事。

原来加relabel=shared可以让目录挂载。所以命令变成 podman run --name container_name -p=27017:27017 --mount type=bind,destination=/data/db,relabel=shared -d mongo