如何使用无根 podman 创建持久卷?
How to create a persistent volume with rootless podman?
我正在尝试 运行 一个 mongodb 容器。一切都很好,但它不会启动,因为它无法修改给定卷的权限。 Red Hat article 中有一个关于此问题的可能修复程序,但它可能不会起作用,因为容器内的 mongodb 以 root 身份执行所有操作。 (或者至少我没有成功)
还有一个可行的解决方案已发布 ,但只有在将容器安装在与容器相同的目录中时它才有效,而我的情况并非如此。
是否可以在没有 root 的情况下 运行 类似的东西,或者现在唯一的选择是 运行 它作为 root?
podman run -d -p 27017:27017 -v /path/to/dir:/data/db --name container_name mongo:latest
通过将 :Z
附加到 -v
选项的值,它可以在 Fedora 32 上运行。
这个例子表明它在没有 :Z
的情况下失败,但在 :Z
的情况下成功
[user@laptop ~]$ cat /etc/fedora-release
Fedora release 32 (Thirty Two)
[user@laptop ~]$ podman --version
podman version 2.0.3
[user@laptop ~]$ mkdir /home/user/datadir
[user@laptop ~]$ podman run -d -p 27017:27017 -v /home/user/datadir:/data/db --name container_name docker.io/library/mongo:latest
09db7d3aa409f74e384396d7e8861aa1cb0a3533ffceeb21b604314c240d9772
[user@laptop ~]$ podman container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[user@laptop ~]$ podman logs container_name
find: '/data/db': Permission denied
chown: changing ownership of '/data/db': Permission denied
[user@laptop ~]$ podman container rm 09db7d3aa409f74e384396d7e8861aa1cb0a3533ffceeb21b604314c240d9772
09db7d3aa409f74e384396d7e8861aa1cb0a3533ffceeb21b604314c240d9772
[user@laptop ~]$ podman run -d -p 27017:27017 -v /home/user/datadir:/data/db:Z --name container_name docker.io/library/mongo:latest
649c23b5e43bab97e0b446be29e9c5b6ebc26978d5faff818e078d16c35917b1
[user@laptop ~]$ podman logs container_name | grep 27017
2020-07-26T07:55:53.777+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=649c23b5e43b
2020-07-26T07:55:54.371+0000 I NETWORK [listener] Listening on /tmp/mongodb-27017.sock
2020-07-26T07:55:54.371+0000 I NETWORK [listener] waiting for connections on port 27017
[user@laptop ~]$
引自 podman run
的 man page:
Z 选项告诉 Podman 使用私有非共享标签标记内容。
我正在尝试 运行 一个 mongodb 容器。一切都很好,但它不会启动,因为它无法修改给定卷的权限。 Red Hat article 中有一个关于此问题的可能修复程序,但它可能不会起作用,因为容器内的 mongodb 以 root 身份执行所有操作。 (或者至少我没有成功)
还有一个可行的解决方案已发布
是否可以在没有 root 的情况下 运行 类似的东西,或者现在唯一的选择是 运行 它作为 root?
podman run -d -p 27017:27017 -v /path/to/dir:/data/db --name container_name mongo:latest
通过将 :Z
附加到 -v
选项的值,它可以在 Fedora 32 上运行。
这个例子表明它在没有 :Z
的情况下失败,但在 :Z
[user@laptop ~]$ cat /etc/fedora-release
Fedora release 32 (Thirty Two)
[user@laptop ~]$ podman --version
podman version 2.0.3
[user@laptop ~]$ mkdir /home/user/datadir
[user@laptop ~]$ podman run -d -p 27017:27017 -v /home/user/datadir:/data/db --name container_name docker.io/library/mongo:latest
09db7d3aa409f74e384396d7e8861aa1cb0a3533ffceeb21b604314c240d9772
[user@laptop ~]$ podman container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[user@laptop ~]$ podman logs container_name
find: '/data/db': Permission denied
chown: changing ownership of '/data/db': Permission denied
[user@laptop ~]$ podman container rm 09db7d3aa409f74e384396d7e8861aa1cb0a3533ffceeb21b604314c240d9772
09db7d3aa409f74e384396d7e8861aa1cb0a3533ffceeb21b604314c240d9772
[user@laptop ~]$ podman run -d -p 27017:27017 -v /home/user/datadir:/data/db:Z --name container_name docker.io/library/mongo:latest
649c23b5e43bab97e0b446be29e9c5b6ebc26978d5faff818e078d16c35917b1
[user@laptop ~]$ podman logs container_name | grep 27017
2020-07-26T07:55:53.777+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=649c23b5e43b
2020-07-26T07:55:54.371+0000 I NETWORK [listener] Listening on /tmp/mongodb-27017.sock
2020-07-26T07:55:54.371+0000 I NETWORK [listener] waiting for connections on port 27017
[user@laptop ~]$
引自 podman run
的 man page:
Z 选项告诉 Podman 使用私有非共享标签标记内容。