Docker

為什麼我不能 cd 到帶有 docker run 的目錄?

  • December 20, 2021

我需要從特定目錄執行應用程序。

$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory

該目錄肯定存在,如果我通過互動執行 bash 連接到 docker,我可以執行上述命令。

$ sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014

我可以通過指定完整路徑來執行我的程序,但是它會崩潰,因為它期望從目前目錄啟動。我能做些什麼?

將您的命令作為參數傳遞給 /bin/sh,如下所示:

sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'

您可以使用-w選項來更改您的工作目錄。

docker run

 -w, --workdir=""           Working directory inside the container

因此,在您的情況下,您將執行:

sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014

引用自:https://serverfault.com/questions/634883