0

我正在尝试通过 podman-compose 在容器内启动 kafka。我正在使用/opt/kafka/kafka_2.12-2.4.1/bin/kafka-server-start.sh哪个很好。但是,我正在安装一个包含属性文件的目录/home/vagrant/repos/kafkazookeeper/config:/home/kafka/config。现在,此属性文件的所有者/组权限为nobody/nobody. 在主机上,kafka 用户是,kafka:x:1001:1001::/home/kafka:/bin/bash但在容器中,kafka 用户是kafka:x:1000:0::/opt/kafka/:/bin/bash

我尝试--uidmap 1001:kafka在 docker-compose.yaml 中使用,但没有奏效。任何想法都非常感谢。

4

1 回答 1

1

我强烈推荐阅读这篇文章:https ://www.redhat.com/sysadmin/rootless-podman-makes-sense

容器中的用户和他们的 UID 被映射到主机上的一组不同的用户和 UID。这是由/etc/subuid和控制的/etc/subgid,您可以在运行时看到实际的映射podman unshare cat /proc/self/uid_map

如果您在kafka主机上的用户下运行容器,则该kafka用户将被映射到root容器内部。您不能kafka将容器内的kafka用户映射到容器外的用户,因为root已经映射到它,并且您不能将容器中的两个不同 UID 映射到主机上的单个 UID。

我认为您可以将配置文件的权限设置为每个人都可以读取。或者您可以在主机上创建另一个用户,将其映射到kafka容器内的用户使用--uidmap,然后使用新创建的用户来控制配置。

于 2021-07-06T15:01:29.257 回答