2017-04-24 84 views
0

我想在某些可能已停止的泊塢窗容器上運行docker exec在可能已停止的容器上運行docker exec,以便它可以毫無錯誤地執行

可能我的意思是它可以運行得很好,但在某些情況下,即服務器重新啓動等,我想運行docker exec的容器將被停止。

有沒有什麼好的方法可以確保docker exec在兩種情況下都能正確執行(容器運行,容器停止)。而在停止的情況下,將不返回:

Error response from daemon: Container is not running

回答

1

docker exec --help

就可以發現,除其他事項外

Run a command in a running container

我不知道你想做什麼與停止的容器?

也許嘗試重新啓動它?

你知道你可以啓動一個容器重新啓動的政策總是

看到該文檔

https://docs.docker.com/engine/reference/run/

提取

Always restart the container regardless of the exit status. When you specify always, the Docker daemon will try to restart the container indefinitely. The container will also always start on daemon startup, regardless of the current state of the container.

1

您不能運行docker exec反對一個停止的容器。從docker help exec

$搬運工幫助高管

用法:搬運工EXEC [OPTIONS]容器COMMAND [ARG ...]

運行運行在命令容器

因此,如果您的目標容器因某種原因已停止,則需要通過docker start <your_container>啓動它,然後才能執行操作docker exec ....

順便說一句,docker run命令有一個選項叫--restart讓你指定容器的重啓策略,你可以找到docker run --restart docs更多的細節。這裏是可用的4個政策:

  • 沒有:退出時不自動重新啓動容器。這是默認設置。

  • on-failure [:max-retries]:僅在容器以非零退出狀態退出時重新啓動。或者,限制Docker守護程序嘗試重新啓動的次數。

  • 總是:始終重新啓動容器,無論退出狀態如何。當你總是指定時,Docker守護進程將嘗試無限期地重啓容器。無論容器的當前狀態如何,容器也將始終在守護進程啓動時啓動。

  • 除非-停止:始終重新啓動集裝箱不管退出狀態,但如果容器之前已經投入到停止狀態不啓動它的守護進程啓動。

默認情況下它是no,您可以根據您的要求選擇另一個。例如,如果您選擇non-stopped,則在服務器重新啓動後,docker守護程序準備就緒後,您的容器將自動重新啓動。

相關問題