C代码工作正常并正确进入命名空间,但Go代码似乎总是从setns
调用返回EINVAL 进入mnt
命名空间.我已经尝试了数置换(包括嵌入的C代码与CGO和外部的.so
)上的Go 1.2
,1.3
和当前的尖端.
单步执行代码gdb
表明两个序列都setns
以libc
完全相同的方式调用(或者它在我看来).
我已经把下面的代码中的问题煮成了问题.我究竟做错了什么?
我有一个用于启动快速busybox容器的shell别名:
alias startbb='docker inspect --format "{{ .State.Pid }}" $(docker run -d busybox sleep 1000000)'
Run Code Online (Sandbox Code Playgroud)
运行之后,startbb
将启动一个容器并输出它的PID.
lxc-checkconfig
输出:
Found kernel config file /boot/config-3.8.0-44-generic
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: missing
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup …
Run Code Online (Sandbox Code Playgroud)