ฉันคิดว่าสิ่งนี้ควรขึ้นอยู่กับสถานการณ์ใช้คอนเทนเนอร์ต่อไปนี้เป็นตัวอย่าง:
# docker run -it -d ubuntu
91262536f7c9a3060641448120bda7af5ca812b0beb8f3c9fe72811a61db07fc
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91262536f7c9 ubuntu "/bin/bash" 5 seconds ago Up 4 seconds serene_goldstine
(1) ใช้ " docker attach
" เพื่อแนบคอนเทนเนอร์:
เนื่องจาก " docker attach
" จะไม่จัดสรร tty ใหม่ แต่ใช้ tty ที่ทำงานอยู่เดิมดังนั้นหากคุณเรียกใช้exit
คำสั่งคำสั่งจะทำให้การออกจากคอนเทนเนอร์ที่ใช้อยู่:
# docker attach 91262536f7c9
exit
exit
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91262536f7c9 ubuntu "/bin/bash" 39 minutes ago Exited (0) 3 seconds ago serene_goldstine
ดังนั้นถ้าคุณอยากที่จะทำให้การทำงานออกจากภาชนะที่คุณควรใช้Ctrl+ p+ + Ctrlq
(2) ใช้ " docker exec
"
ตั้งแต่ " docker exec
" จะจัดสรร TTY ใหม่ดังนั้นฉันคิดว่าคุณควรจะใช้exit
แทนCtrl+ p+ + Ctrlq
ต่อไปนี้คือการดำเนินการCtrl+ p+ Ctrl+ qเพื่อออกจากภาชนะ:
# docker exec -it 91262536f7c9 bash
root@91262536f7c9:/# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 18160 1908 ? Ss+ 04:03 0:00 /bin/bash
root 15 0.0 0.0 18164 1892 ? Ss 04:03 0:00 bash
root 28 0.0 0.0 15564 1148 ? R+ 04:03 0:00 ps -aux
root@91262536f7c9:/# echo $$
15
จากนั้นเข้าสู่ระบบคอนเทนเนอร์อีกครั้งคุณจะเห็นbash
กระบวนการในdocker exec
คำสั่งpreavious ยังคงมีชีวิตอยู่ (PID คือ 15):
# docker exec -it 91262536f7c9 bash
root@91262536f7c9:/# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 18160 1908 ? Ss+ 04:03 0:00 /bin/bash
root 15 0.0 0.0 18164 1892 ? Ss+ 04:03 0:00 bash
root 29 0.0 0.0 18164 1888 ? Ss 04:04 0:00 bash
root 42 0.0 0.0 15564 1148 ? R+ 04:04 0:00 ps -aux
root@91262536f7c9:/# echo $$
29