我寫了以下Dockerfile,它應該運行一個任意的命令(通過docker run的引數提供一個):
FROM ubuntu:20.04
RUN apt -y update && apt-get -y update
RUN apt install -y python3 git
CMD bash
但是當我試圖傳遞命令時,例如cd workspace,我得到了以下結果:
C:Usersuser>docker run -it cloudbuildtoolset:newly cd workspace
docker:來自守護程式的錯誤回應。OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "cd": executable file not found in $PATH: unknown.
我做錯了什么?
請不要建議我重新啟動我的機器/docker/whatever
。uj5u.com熱心網友回復:
cd是一個特殊的內置工具,在POSIX shell規范的語言中。 它是改變運行中的shell行為的東西,而不是一個獨立的程式。 該錯誤資訊的意思是:沒有/bin/cd或類似的可執行程式,你可以運行。
請記住,Docker 容器只運行一個行程,然后退出,失去它的任何狀態。 這條單一的命令可能沒有意義,因為它只是改變了容器的作業目錄。
如果你想在容器內運行一個行程,但在不同的作業目錄中,你可以使用docker run -w選項
docker run -it
-w /workspace
cloudbuildtoolset:最新
你想要運行的命令。
或者,同樣地,在你的Docker檔案中添加一個WORKDIR指令。
你也可以啟動一個shell包裝器作為主容器行程。 這將能夠使用像cd這樣的內置命令,但它的使用更加復雜,并可能引入參考問題。
docker run -it cloudbuildtoolset:latest
/bin/sh -c 'cd /workspace && the command you want to run'/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326370.html
標籤:
上一篇:VisualStudio2022年的System.Environment.GetEnvironmentVariable不作業。
