私はコンテナで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
コンテナシェルに戻ります。
quit
Pythonプロンプトを終了し、Dockerホスト(コンテナではない)に直接戻る入力を望みます。
答え1
exec
実行時にこれを使用できますpython3
。
root@container:/pyScript# exec python3 kwit.py
これにより、実行中のシェルがスクリプト実行に置き換えられますpython3
。プロセスが終了すると、python3
シェルがなくなったためdocker exec
終了します。