Docker 使用绑定挂载运行集装箱化MongoDB

Docker 使用绑定挂载运行集装箱化MongoDB,docker,podman,Docker,Podman,我正在OCI容器(docker.io/library/mongo)中运行MongoDB。我想在/data/db(Kubernetes的说法是hostPath挂载)的容器中挂载一个主机目录。我在FedoraSilverBlue上使用Podman(具有相同CLI的Docker替代方案),但我认为问题不在于Podman或Silverblue的不兼容性 使用: podman run --name container_name -p=27017:27017 --mount type=bind,source

我正在OCI容器(docker.io/library/mongo)中运行MongoDB。我想在/data/db(Kubernetes的说法是hostPath挂载)的容器中挂载一个主机目录。我在FedoraSilverBlue上使用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

容器退出时将显示以下日志:

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\u name-p=27017:27017--mount type=bind,destination=/data/db,relabel=shared-d mongo

您可以添加一些关于
/path/to/dir
的所有权和权限的信息吗?您是以
root
用户身份运行
podman
还是以非
root
用户身份运行?我两个都试过了,但无法重现您看到的错误。@larsks我以非root用户身份运行podman。
/path/to/dir
属于同一个非root用户,并且具有权限
drwxrwxr-x
。我发现,如果我添加
relabel=shared
to mount选项,容器将正确装载,因此我猜这是一个权限问题。你知道为什么会这样吗?
cannot configure rootless cgroup using the cgroupfs manager
find: '/data/db': Permission denied
chown: changing ownership of '/data/db': Permission denied