【问题标题】:Running containerized MongoDB with bind mount使用绑定挂载运行容器化 MongoDB
【发布时间】:2020-04-20 19:02:57
【问题描述】:

我在 OCI 容器 (docker.io/library/mongo) 中运行 MongoDB。我想在 /data/db 的容器内挂载一个主机目录(Kubernetes 用语中的 hostPath 挂载)。我在 Fedora Silverblue(具有相同 CLI 的 Docker 替代品)上使用 Podman,但我认为问题不在于 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,我尝试将主机目录更改为该用户,但这无济于事。我也尝试将主机的文件夹设置为具有全局读写访问权限,但这也无济于事。

【问题讨论】:

  • 你能补充一些关于/path/to/dir的所有权和权限的信息吗?您是以root 的身份运行podman 还是以非root 用户身份运行?我都试过了,但我无法重现您看到的错误。
  • @larsks 我以非 root 身份运行 podman。 /path/to/dir 属于同一个非 root 用户,拥有权限 drwxrwxr-x。我发现如果我将relabel=shared 添加到挂载选项,容器会正确挂载,所以我猜这是权限问题。

标签: docker podman


【解决方案1】:

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

【讨论】:

  • 知道为什么会这样吗?
猜你喜欢
  • 1970-01-01
  • 2019-04-29
  • 2021-01-01
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
相关资源
最近更新 更多