我试图通过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。但是没有成功。如有任何意见,不胜感激。
我强烈推荐阅读这篇文章: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。
我认为你可以设置配置文件的权限,让每个人都能读。或者您可以在主机上创建另一个用户,使用--uidmap
将其映射到容器内的kafka
用户,然后使用新创建的用户来控制配置。