簡體   English   中英

命令 docker 啟動 -a<container id> 什么都不做,“Ubuntu 20.04.02 LTS”</container>

[英]Command docker start -a <Container ID> do nothing, “Ubuntu 20.04.02 LTS”

創建容器后,我正在嘗試在 docker 中運行start命令。 例如:

$ docker create busybox echo hi there

它給了我該容器的 ID,例如4e59d0fe8584bb4dcaf44dbce100253b6767bf51546edc27f29f39f52ed57957

當我嘗試在沒有任何標志的情況下啟動該容器時: -a標志它可以工作,但它只會再次給我那個 id。 但是當我嘗試使用附加-a標志顯示 output 時,實際上什么也沒發生,即使它沒有給我一個錯誤,只是命令仍在運行而沒有發生任何事情。

我也無法通過 Ctrl+c 終止命令並停止執行,所以我必須關閉終端的唯一選項

在此處輸入圖像描述 我盡量把問題弄清楚

您可以通過以下命令運行映像:

docker run -it busybox

它會帶您進入 shell 環境,並且您有 -i(交互式)-t(tty)終端,這意味着您可以看到終端。

busybox image的默認CMD (PID1) 是sh ,請參閱this

對於docker create busybox echo hi thereCOMMANDecho hi there 這意味着容器啟動后,首先會在此處執行echo hi there ,然后作為 PID1 退出,容器也退出。 如果您使用docker ps ,您將找不到您的容器,您可以使用docker ps -a找到您退出的容器。

所以,

  • 如果您打算運行一次性任務,那么隨着容器完成其任務,您無法再進入容器是正常的。

  • 如果你打算運行一個守護任務,把容器服務留在那里,你應該選擇一個運行后不會完成的命令,那么你的容器仍然在那里。

對於您的情況,為了讓您快速了解它,您可以使用 next 快速了解,使用tail -f /dev/null讓容器不退出:

# docker create busybox sh -c "echo hi there; tail -f /dev/null"
840d7c972a96712e48c9aa391aa63638fb10e12307797e338157105bdfb6934e
root@shlava:~# docker start 840d7c972a96712e48c9aa391aa63638fb10e12307797e338157105bdfb6934e
840d7c972a96712e48c9aa391aa63638fb10e12307797e338157105bdfb6934e
root@shlava:~# docker logs 0ae2d689e63a8688213d1eaf285e555ba3d672b8953f0d2730a1897c9d648a26
hi there
root@shlava:~# docker exec -it 0ae2d689e63a8688213d1eaf285e555ba3d672b8953f0d2730a1897c9d648a26 /bin/sh
/ #

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM