我基於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'找到它 –