Saya dapat melampirkan ke proses buruh pelabuhan tetapi Ctrl+ ctidak bekerja untuk melepaskannya. exit
pada dasarnya menghentikan proses.
Apa alur kerja yang disarankan agar proses berjalan, sesekali melampirkannya untuk membuat beberapa perubahan, lalu melepaskannya?
xterm
,konsole
, dll kerja? Ini bekerja untuk saya (saya terpisah).Jawaban:
Untuk melepaskan tty tanpa keluar dari shell, gunakan urutan escape Ctrl+ Pdiikuti oleh Ctrl+ Q. Lebih detail di sini .
Info tambahan dari sumber ini :
^P^Q
dan disambungkan kembali dengan docker attach^P^Q
; akan mengganggu stdin^P^Q
; dapat SIGKILL klien; dapat memasang kembali dengan melampirkan dockersumber
"detachKeys": "ctrl-a,a"
lepas yang dapat dikonfigurasi dengan mis. Dalam file .docker / config.json Anda atau--detach-keys "ctrl-a,a"
pada baris perintah dengan melampirkan dll.Ctrl + Z
tidak lepas; itu hanya latar belakang prosesnya. Ini tidak sama dengan melepaskan dan membawa penalti kinerja.Periksa juga yang
--sig-proxy
pilihan :Kemudian gunakan CTRL+ cuntuk melepaskan
sumber
docker run -ti --sig-proxy=false busybox top
yang sepertinya tidak berhasil, prosesnya dimatikan dengan ctrl-c tetapi mulai dengandocker run -t -sig-proxy=false busybox top
tampaknya berfungsi dan memungkinkan berhenti dengan ctrl-cCtrl-c
akan menghentikan wadah juga.Jika Anda hanya ingin membuat beberapa modifikasi pada file atau memeriksa proses, berikut ini satu solusi lain yang mungkin Anda inginkan.
Anda bisa menjalankan perintah berikut untuk menjalankan proses baru dari wadah yang ada:
sudo docker exec -ti [CONTAINER-ID] bash
akan memulai proses baru dengan bash shell, dan Anda bisa keluar darinya dengan Ctrl+ Csecara langsung, itu tidak akan memengaruhi proses aslinya.
sumber
exec
bukan itu.Saya pikir ini harus tergantung pada situasinya. Ambil wadah berikut sebagai contoh:
(1) Gunakan "
docker attach
" untuk melampirkan wadah:Karena "
docker attach
" tidak akan mengalokasikan tty baru, tetapi menggunakan kembali tty yang berjalan asli, jadi jika Anda menjalankanexit
perintah, itu akan menyebabkan wadah yang berjalan keluar:Jadi, kecuali Anda benar-benar ingin membuat keluar wadah berjalan, Anda harus menggunakan Ctrl+ p+ Ctrl+ q.
(2) Gunakan "
docker exec
"Karena "
docker exec
" akan mengalokasikan tty baru, jadi saya pikir Anda harus menggunakanexit
daripada Ctrl+ p+ Ctrl+ q.Berikut ini adalah mengeksekusi Ctrl+ p+ Ctrl+ quntuk keluar dari wadah:
Kemudian masuk kembali wadah, Anda akan melihat
bash
proses dalamdocker exec
perintah preavious masih hidup (PID 15):sumber
Untuk melepaskan diri dari wadah yang sedang berjalan, gunakan ^P^Q(tahan Ctrl, tekan P, tekan Q, lepaskan Ctrl).
Ada tangkapan: ini hanya berfungsi jika wadah dimulai dengan keduanya
-t
dan-i
.Jika Anda memiliki wadah berjalan yang dimulai tanpa satu (atau keduanya) opsi ini, dan Anda lampirkan
docker attach
, Anda harus menemukan cara lain untuk melepaskan. Bergantung pada opsi yang Anda pilih dan program yang berjalan, ^Cdapat bekerja, atau mungkin membunuh seluruh wadah. Anda harus bereksperimen.Tangkapan lain: Bergantung pada program yang Anda gunakan, terminal, shell, SSH client, atau multiplexer Anda bisa menyadap salah satu ^Patau ^Q(biasanya yang terakhir). Untuk menguji apakah ini masalahnya, coba jalankan atau lampirkan dengan
--detach-keys z
argumen. Anda sekarang dapat melepaskan dengan menekan z, tanpa pengubah. Jika ini berhasil, program lain mengganggu. Cara termudah untuk mengatasi ini adalah dengan mengatur urutan lepas Anda sendiri menggunakan--detach-keys
argumen. (Misalnya, untuk keluar dengan ^K, gunakan--detach-keys 'ctrl-k'
.) Atau, Anda dapat mencoba menonaktifkan intersepsi tombol di terminal Anda atau program mengganggu lainnya. Misalnya,stty start ''
ataustty start undef
dapat mencegah terminal menyadap^Q pada beberapa sistem POSIX, walaupun saya belum menemukan ini membantu.sumber
ketika tidak ada lagi yang berfungsi, buka terminal baru kemudian:
sumber
-9
tidak perlu.docker attach
dan bukan orang tuanya.Untuk melepaskan diri dari wadah, Anda cukup memegang Ctrldan menekan P+ Q.
Untuk melampirkan wadah yang sedang Anda gunakan:
sumber
Saya memiliki masalah yang sama, ctrl- Pdan Qtidak akan bekerja, atau ctrl- C... akhirnya saya membuka sesi terminal lain dan saya melakukan "buruh pelabuhan berhenti containerid " dan "buruh pelabuhan mulai containerid " dan itu menyelesaikan pekerjaan. Aneh.
sumber
--rm
bendera.Ctrl+P
danCtrl+Q
berfungsi jika Anda memulai wadah dengan-it
bendera.Di shell yang sama, tahan ctrltombol dan tekan tombol plaluq
sumber
-it
bendera.Saya menggunakan Mac, dan untuk beberapa alasan, Ctrl- p Ctrl- qhanya akan bekerja jika saya juga memegangShift
sumber
docker ps
docker kill ${containerId}
sumber
untuk menghentikan proses buruh pelabuhan dan melepaskan porta, gunakan pertama ctrl- cuntuk meninggalkan pintu keluar kontainer kemudian gunakan buruh pelabuhan ps untuk menemukan daftar wadah berjalan. Kemudian Anda dapat menggunakan berhenti buruh pelabuhan untuk menghentikan proses itu dan melepaskan port-nya. Nama kontainer dapat Anda temukan dari perintah buruh pelabuhan ps yang memberikan nama di kolom nama. Semoga ini menyelesaikan pertanyaan Anda ....
sumber
Jika Anda hanya membutuhkan proses buruh pelabuhan di latar belakang yang dapat Anda gunakan
Ctrl + Z
Sadarilah bahwa itu bukan pelepasan nyata dan itu datang dengan penalti kinerja. (Anda dapat mengembalikannya ke latar depan dengan
bg
perintah).Pilihan lain adalah menutup saja terminal Anda, jika Anda tidak membutuhkannya lagi.
sumber
Bagi siapa pun yang mengalami masalah yang sama saya lakukan (tidak dapat melepaskan tanpa membunuh wadah, bahkan ketika mengatur kunci lepas) ......
Saat memulai wadah Anda dengan
docker-compose up -d
alih-alih menggunakan
docker attach {container name}
untuk melihat log tailing ....coba
docker-compose logs -f {service name}
ctrl- cbunuh ekor log tanpa membunuh kontainer Anda{service name}
menjadi layanan yang tercantum di samping file docker-compose.yml Anda .. (mis. sementara nama wadah = elk_logstash_1 -> nama layanan = logstashHTH
sumber
Memperbarui
Saya biasanya menggunakan buruh pelabuhan untuk melihat apa yang ditampilkan oleh STDOUT, untuk mengatasi masalah kontainer. Saya baru saja menemukan
docker logs --follow 621a4334f97b
, yang memungkinkan saya melihat STDOUT sementara juga bisa ctrl + c dari itu tanpa mempengaruhi operasi kontainer! Apa yang selalu saya inginkan.... tentu saja Anda harus mengganti ID wadah Anda sendiri.
Jawaban Asli
Saya ingin membiarkan wadah berjalan, tetapi telah terpasang tanpa memulai wadah
-it
. Solusi saya adalah mengorbankan koneksi SSH saya sebagai gantinya (karena saya SSH masuk ke mesin yang menjalankan wadah). Membunuh sesi ssh itu membuat wadah tetap utuh tetapi melepaskanku darinya.sumber