如何从 python cli 退出容器 shell

如何从 python cli 退出容器 shell

我正在容器中运行 python。

目标是在收到输入值后从正在运行的 python 代码中退出容器quit。我尝试了下面的代码:

import subprocess

def qq():
    while True:
        choice = ""
        choice = input("Type \"quit\" to exit container> ")
        if choice == 'quit':
            print("Exiting container")
            subprocess.call("exit", shell=True)
            break
        else:
            print("Invalid input.")

qq()

docker exec进入容器后bash,运行上面的代码,输出如下:

root@container:/pyScript#
root@container:/pyScript# python3 kwit.py
Type "quit" to exit container>
Invalid input.
Type "quit" to exit container> quit
Exiting container
root@container:/pyScript#
root@container:/pyScript#

现在,输入quit将我带回容器 shell。

我希望输入quit退出 python 提示符并直接返回 docker 主机(而不是容器)

答案1

您可以exec在运行时使用python3

root@container:/pyScript# exec python3 kwit.py

这将用运行该脚本来替换正在运行的 shell python3。当python3进程终止时,不再有 shell,因此docker exec将终止。

相关内容