我基于Ubuntu部署容器:16.04Docker容器内运行的程序的二进制文件在哪里?
docker run -ti ubuntu:latest /bin/bash
我已经从易nsnake下载,在容器中的/斌/庆典里,一个游戏:
apt install nsnake
和我在我的主机上没有这样的游戏。
现在我想知道nsnake的二进制文件在主机上的位置是; 主机上:
ps -e | grep nsnake
,然后,以PID:
file /proc/PID/exe
但,而不是返回的文件从指出的/ proc/PID/EXE,这最后的命令给我:
/proc/PID/exe: broken symbolic link to /usr/games/nsnake
所以,重要的问题是: 有没有一种方法来找到nsnake的二进制文件的位置?
其他有趣的问题是:
- 为什么符号链接是 “破”?
- 如果在相关的/ proc/PID/exe文件中没有引用原始文件夹,系统如何知道它需要运行哪些代码?
好吧,也许这个问题不清楚......关键是我想要通过宿主的PID层次结构来达到容器位置,而不是通过新命名空间的PID树。我需要可执行程序的“非常绝对”路径,主机上的路径。 –
您正在进入码头内部。主机中没有直接路径。 Docker使用不容易从主机上检查的分层存储。这也取决于您的docker设置使用的存储驱动程序:https://docs.docker.com/engine/userguide/storagedriver/selectadriver/。 – Robert
还有挂载名称空间,类似于chroot。主机的路径通常是无用的。你可以用'sudo find/var/lib/docker -name nsnake -type f'找到它 –