我已经使用“systemd-nspawn”命令创建了一个容器。在该容器内,使用“route”命令,我可以获取默认网关的 IP 地址并对其进行 ping 操作。现在,主机系统(容器外)中的“ps -ecf”显示“ping”过程。
“systemd-nspawn” 的手册页说它虚拟化了进程树、各种 IPC 子系统以及主机和域名。
我的疑问是,如果“systemd-nspawn”虚拟化了进程树,为什么我会在容器外的“ps -ecf”中看到“ping”进程??
我也可以在相反的情况下观察这种情况,即从主机“ping”并在容器内“ps -ecf”。
日志:
1)创建容器并 ping:
以下命令中的目录 chroot 有一个从“debootsrtap”获取的 debian 映像
root@vig-debian:/home/vignesh/docker_tutorials# systemd-nspawn -D chroot
在 /home/vignesh/docker_tutorials/chroot 上生成容器 chroot。1
秒内按 ^] 三次即可终止容器。/etc/localtime
不是符号链接,不会更新容器时区。
root@chroot:~#
root@chroot:~# route
内核 IP 路由表
目标网关 Genmask 标志 度量标准引用使用 Iface
默认 10.0.2.2 0.0.0.0 UG 1024 0 0 eth0
10.0.2.2 * 255.255.255.255 UH 1024 0 0 eth0
10.12.4.0 * 255.255.255.0 U 0 0 0 eth0
root@chroot:~# ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) 字节数据。
来自 10.0.2.2 的 64 字节:icmp_seq=1 ttl=63 时间=0.322 毫秒
来自 10.0.2.2 的 64 字节:icmp_seq=2 ttl=63 时间=0.440 毫秒
2)主机中的“ps”
root@vig-debian:/home/vignesh/docker_tutorials# ps -ecf | grep “ping”
root 3460 3452 TS 19 16:49 pts/1 00:00:00 ping 10.0.2.2
root 3462 2493 TS 19 16:49 pts/2 00:00:00 grep ping
root@vig-debian:/home/vignesh/docker_tutorials#
root@vig-debian:/home/vignesh/docker_tutorials# machinectl
机器容器服务
chroot 容器 nspawn
列出了 1 台机器。
答案1
主机可以看到所有容器进程并发送信号。
从两个容器进行测试,您将看到进程是不可见的。