【问题标题】:How use systemd-nspawn with --network-veth and --port ( -n and -p)?如何将 systemd-nspawn 与 --network-veth 和 --port(-n 和 -p)一起使用?
【发布时间】:2017-06-02 23:22:37
【问题描述】:

我跑;

systemd-nspawn -n -p 80:80 -bD /path/to/httpd-container

在容器中,httpd 有效。但是,从主机访问,它不会访问。此外,以下工作没有网络选项;

systemd-nspawn -bD /path/to/httpd-container

-n--network-veth-p--port 选项需要什么?

【问题讨论】:

标签: linux containers systemd-nspawn


【解决方案1】:

这里有同样的问题;为了帮助其他人从头开始复制:

准备

从网上提取一张普通的图片

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

【讨论】:

猜你喜欢
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 2021-09-25
  • 2021-11-21
  • 2021-08-26
相关资源
最近更新 更多