Tôi nghĩ rằng điều này sẽ phụ thuộc vào tình huống. Lấy ví dụ về container sau đây:
# 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) Sử dụng " docker attach" để đính kèm container:
Vì " docker attach" sẽ không phân bổ một tty mới, nhưng sử dụng lại tty đang chạy ban đầu, vì vậy nếu bạn chạy exitlệnh, nó sẽ gây ra thoát container đang chạy:
# 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
Vì vậy, trừ khi bạn thực sự muốn thực hiện chạy thoát container, bạn nên sử dụng Ctrl+ p+ Ctrl+ q.
(2) Sử dụng " docker exec"
Vì " docker exec" sẽ phân bổ một tty mới, vì vậy tôi nghĩ bạn nên sử dụng exitthay vì Ctrl+ p+ Ctrl+ q.
Sau đây là thực thi Ctrl+ p+ Ctrl+ qđể thoát khỏi container:
# 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
Sau đó đăng nhập lại container, bạn sẽ thấy bashquá trình trong docker execlệnh preaingly vẫn còn tồn tại (PID là 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