我在本地和远程 Linux 机器上设置了 nsenter。远程盒子是一个托管的虚拟机。本地盒子是我办公室里的一台电脑。两者都运行 Ubuntu 12.0.4 LTS 服务器版本,并且都具有支持 docker 的内核补丁。我的本地机器正在运行 Docker 1.0.1,即 Docker 的 apt-get 版本。远程盒子正在运行 1.4.1,这是最新和最好的。
这是我用来在两台机器上执行 nsenter 的过程,显示了远程机器的详细信息:
kelpmaster@external:~$ sudo docker inspect --format {{.State.Pid}} fluffy_cinnamon
32113
kelpmaster@external:~$ sudo nsenter --target 32113 --mount --ipc --net --pid
nsenter: cannot open /proc/32113/ns/pid: No such file or directory
我检查了远程框上的进程列表,32113肯定在进程列表中。我检查了文件结构,肯定有一个名为 /proc/32113/ns的目录。但是,在我的远程机器上,名为pid的文件/目录在进程命名空间文件夹中不存在。在我的本地盒子上确实如此。
为什么在我的本地机器上正确创建pid文件/目录时,它从我的远程机器中丢失?我该如何解决这个问题,以便我可以像在本地机器上一样在远程机器上输入我的Docker容器?