我正在尝试unshare
更好地理解容器。作为普通用户,是否可以创建一个命名空间,让程序可以监听端口,123
并在“主”命名空间上将端口1234
重定向到该命名空间?
我猜应该是,因为 Podman 是无根容器引擎,可以做到这一点。查看了man veth
也没用。
答案1
Podman 的工作原理是slirp4netns管理水龙头设备在非特权容器内。摘自 slirp4netns 的 README:
从 Linux 3.8 开始,非特权用户可以创建
network_namespaces(7)
。user_namespaces(7)
但是,非特权网络命名空间并不是很有用,因为veth(4)
在主机和网络命名空间之间创建对仍然需要 root 权限。(即没有互联网连接)slirp4netns 允许以完全非特权的方式将网络命名空间连接到 Internet,方法是将网络命名空间中的 TAP 设备连接到用户模式 TCP/IP 堆栈(“slirp”)。
为了实现您的目标,您需要做一些类似的事情。