作者回复: 对!
作者回复: 是的
作者回复: @AMaMiMou 很好的问题,对于/proc/sys/net下的参数,你在容器中看到的,基本都是network namespace下的。 对于容器启动的时候,runc只允许修改namesapce下的参数值,而不会修改host相关的值。 可以参看一下runc的sysctl validation的代码: https://github.com/opencontainers/runc/blob/ff819c7e9184c13b7c2607fe6c30ae19403a7aff/libcontainer/configs/validate/validator.go#L135
作者回复: > service iptables stop 看上去应该是 iptables stop 后把原来的iptables rules flush了,就可以工作了。 你可以查看一下具体是那条iptables规则阻止了访问。
作者回复: /proc下的内容大部分是没有隔离的,就想你说的/proc/meminfo, /proc/stat 在容器中看到的都和宿主机上的是一样的。 其他有一些因为namespace不同而不同的/proc的内容, 比如 /proc/<pid>/, 容器下只能看到自己pid namespace里的进程pid。 /proc/mounts的内容和mount namespace相关。 还有IPC namesapce相关的一些/proc下的参数,等等。
作者回复: docker exec 同时进入了容器的pid/mnt/net namespace, 而 nsenter 修改参数的时候,只是进入了容器的net namespace.
作者回复: 嗯,如果container有privileged的权限,那么在容器中几乎和host有同等权限了。
作者回复: 一个是namespace, 主要是资源隔离 另外一个是cgroup,主要是资源的划分。
作者回复: @王传义 你这里说的“端口”是指tcp/udp层的端口号吗?
编辑回复: 知道了盲区也是好事,可以去补一补。一定可以的~