i运行;
systemd-nspawn -n -p 80:80 -bD /path/to/httpd-container
在容器中,httpd起作用。但是,从主机访问,剂量无法访问。此外,下面的无网络选项起作用;
systemd-nspawn -bD /path/to/httpd-container
我需要使用选项-n
,--network-veth
和-p
,--port
?
相同的问题;为了帮助他人从头开始复制:
准备
从Internet汲取平凡的图像
machinectl pull-raw --verify=no https://download.fedoraproject.org/pub/fedora/linux/releases/25/CloudImages/x86_64/images/Fedora-Cloud-Base-25-1.3.x86_64.raw.xz
测试1
在没有网络选项的容器内运行服务器
systemd-nspawn -M Fedora-Cloud-Base-25-1.3.x86_64.raw nc -l localhost 10000
在另一个窗口中
echo hello | nc localhost 10000
作品
测试2
启用专用网络和端口映射,以便将主机端口10000映射到容器端口20000
systemd-nspawn -M Fedora-Cloud-Base-25-1.3.x86_64.raw --private-network -p 10000:20000 nc -l localhost 20000
但随后
echo hello | nc localhost 10000
导致
Ncat: Connection refused.
为什么错误
我几乎会期望完全相反的结果;无论如何,第二个测试是我想开始工作的用例。我真的需要我的容器被网络隔离,并且在任何情况下都需要端口重定向,因为所有容器在同一端口上运行他们的服务,这些端口需要重定向到主机侧的一系列端口。
我尝试过的
将选项 --network-interface=eno1
(我的公共接口(添加到混音中没有帮助
什么让我感到困惑
我的主机在禁用Selinux的情况下运行Fedora25;我仍然可以在启动容器时看到这些消息,我认为它是无关的,但是它们是吗?
mount(/tmp/nspawn-root-tR1Tr0/sys/fs/selinux) failed, ignoring: No such file or directory
mount(/tmp/nspawn-root-tR1Tr0/sys/fs/selinux) failed, ignoring: Invalid argument