![如何从 python cli 退出容器 shell](https://linux22.com/image/176957/%E5%A6%82%E4%BD%95%E4%BB%8E%20python%20cli%20%E9%80%80%E5%87%BA%E5%AE%B9%E5%99%A8%20shell.png)
我正在容器中运行 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
将终止。