2017-02-20 45 views
1

運行命令您可以通過使用執行的bash在泊塢窗

sudo docker exec -it container bash 

執行的泊塢窗容器中的bash shell的,但我想執行的容器是bash shell命令,然後執行bash的多個命令提示。

像這樣的命令當前工作:

sudo docker exec -it container touch test.txt | bash 

不過,我想在bash提示符下運行該命令只能從泊塢窗容器內,所以我得到一個錯誤:

No such file or directory 

是否有可能使用docker exec執行一個對Docker容器本地的命令?

+0

命令'bash'是容器的'bash'。如果你的容器沒有bash,這實際上可能會失敗(參見圖像alpine)。因此,如果你的容器有一些像'git'這樣的命令,你可以執行'docker exec -it container git clone https:// somegit'。 [docs](https://docs.docker.com/engine/reference/commandline/exec/) – jrbeverly

+1

你試圖運行什麼命令。通過docker exec執行的每條命令都在容器中。 – user2105103

+0

通過命令你是指bash腳本嗎?就像你想做'bash myscript.sh'?如果是這樣,你需要知道容器的工作目錄(可以通過'WORKDIR'設置)。你可以通過在容器中運行'pwd'來找到它。 – jrbeverly

回答

0

嘗試這樣:

sudo docker exec -it container bash -c "touch test.txt ; <another command>" 
+0

咦?你正在試圖從'touch'管道*進入另一個命令?這沒有任何意義 - 'touch'不會在stdout上發出任何東西,所以沒有任何東西可以用來管道。 –

+0

也許你想'''而不是'|'? –

+0

確定,修復,謝謝 – Matthew

1

我想我應該讀過泊塢窗文檔更多!

docker exec -it container mycommand 

工作正常!出於某種原因,我認爲我必須啓動一個bash提示符,然後使用其他命令,我的錯誤。

感謝jrbeverly和user2105103的解釋,「通過docker exec執行的每個命令都在容器中。」

,以防有人好奇如何運行在一個容器中的多個命令,我使用:

sudo docker exec -it container sh -c "com1 && com2 && com3"