我使用泊塢窗引擎API(github.com/docker/engine-api)來執行一些命令搬運工API ContainerExecInspect不能得到正確的退出代碼
我用client.ContainerExecCreate然後client.ContainerExecInspect運行我命令,然後得到的命令退出代碼(我運行在同一個容器的多個命令,以便從ContainerInspect退出代碼得到的是無用的對我。)
這是我的函數使用容器來執行命令
但ContainerExecInspect某個時候返回錯誤的值,因爲有時ContainerExecInspect在命令退出之前調用它說退出代碼爲0,這是不對的
我寫測試用例來測試它
其結果不會是233,這將是0
我已經設置ExecConfig.Detach =真和ExecStartCheck.Detach =真實的,但沒有幫助
有什麼方法可以等到命令退出,然後獲得退出代碼?
增加:
對於我的一些命令運行的是shell腳本不是可執行文件,所以我想我需要前綴/斌/慶典,並等待容器退出,是不是我想要的,我要等待命令退出,容器仍在運行
你是「命令」是'/斌/ bash',所以你要在bash進程退出代碼。如果您想從命令中退出代碼,請直接運行該命令。讀取退出代碼之前,您還需要等待容器停止。 – JimB
事實上,我可以在某個時候得到正確的退出代碼(不是命令在測試用例中,我的意思是另一個命令),所以我不認爲這是命令「/ bin/bash」的問題,謝謝:) –
@ VOID001 ,JimB是正確的,/ bin/bash會給出一個退出代碼,如233當一個孩子退出時,它也應該退出。在這種情況下,Docker運行/ bin/bash的exec.Command。因此,如果您將其更改爲其他命令,退出代碼就是該命令退出的代碼。 –