Ubuntu

容器退出後如何退出 docker exec?

  • August 19, 2021

在我連接到的 docker 退出後,如何優雅地退出我已連接到 using 的 docker 容器docker exec -ti

如果我退出原始容器,執行該docker exec命令的 shell 將被掛起,而我能找到返回其 shell 的唯一方法是docker exec從另一個終端終止該命令。

有沒有更優雅的方式?

無論我是否啟動容器,都會發生這種情況--rm

我在 Ubuntu 20.04 的 gnome-terminal 3.26.3 中的 bash 5.0.16 下執行 docker 19.03.12。

要在不退出 shell 的情況下分離 tty,請使用轉義序列CTRL+P後跟CTRL+ Q。更多細節在這裡

來自此來源的附加資訊:

docker run -t -i → 可以用Ctrl+ P& Ctrl+ Qsequece 分離並用 docker attach 重新連接

docker run -i → 不能用Ctrl+ P& Ctrl+Q序列分離;會破壞標準輸入

docker run → 不能用Ctrl+ P& Ctrl+分離Q;可以 SIGKILL 客戶端;可以使用 docker attach 重新附加

希望這可以幫助。

您首先以分離模式執行容器,而不是前台:

docker run --name mynginx -p 80:80 -d nginx

然後您可以使用docker exec附加到它:

docker exec -it mynginx /bin/sh

請記住,如果您想附加到容器進行檢查,則必須指定--interactive , -i--tty , -t選項,因為您的容器已經在您之前的docker run -d命令的後台執行您的主程序。這樣,當您完成檢查容器時,您可以使用or命令

優雅地退出它,就像您從普通 shell 退出一樣ctrl+d``logout

引用自:https://serverfault.com/questions/1025688