GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Melepaskan Dari Wadah Docker Tanpa Menghentikannya

Kontainer Docker memiliki mode interaktif yang memungkinkan Anda melampirkan aliran input dan output terminal ke proses kontainer. Menekan Ctrl-C biasanya akan menghentikan
proses itu, menyebabkan penampung berhenti. Ini untuk melepaskan dari sesi tanpa menghentikan penampung.

Melepas Tanpa Berhenti

Docker mendukung kombinasi keyboard untuk melepaskan dengan anggun dari sebuah wadah. Tekan Ctrl-P, diikuti dengan Ctrl-Q, untuk melepaskan koneksi Anda.

Anda akan dikembalikan ke shell Anda, tetapi proses yang terpasang sebelumnya akan tetap hidup, menjaga container Anda tetap berjalan. Anda dapat memeriksa ini dengan menggunakan docker ps untuk mendapatkan daftar container yang sedang berjalan.

Menekan Ctrl-C atau menjalankan exit perintah biasanya akan mematikan proses latar depan wadah kecuali jika telah dikonfigurasi secara khusus. Wadah Docker harus memiliki proses latar depan yang berjalan; sebuah wadah tanpa satu akan memasuki keadaan berhenti.

Mengubah Urutan Lepas Keyboard

Anda dapat mengubah urutan pelepasan agar sesuai dengan preferensi Anda atau menghindari konflik dengan pintasan keyboard yang diterapkan oleh aplikasi Anda. Tambahkan detachKeys properti ke ~/.docker/config.json Anda file untuk menentukan kunci yang ingin Anda gunakan.

Docker mendukung a-z karakter dan @ , ^ , dan _ , simbol, serta tanda kurung siku kiri ([ ) dan dua garis miring terbalik (\ ). Ini semua digunakan bersama dengan Ctrl- kunci; huruf juga dapat digunakan satu per satu, tanpa Ctrl .

Urutan kunci dinyatakan sebagai daftar yang dipisahkan koma:

{
    "detachKeys": "Ctrl-d,d"
}

Contoh ini akan terlepas dari wadah saat Anda menekan Ctrl-D langsung diikuti oleh d kunci.

Mengubah Urutan berdasarkan Per-Container

Selain mengubah konfigurasi global Anda, Docker menerima detachKeys menimpa pada basis per-wadah dan per-attachment. Tambahkan --detach-keys tandai ke perintah yang dapat dilampirkan ke proses kontainer untuk mengatur urutan tertentu.

Perintah yang mendukung ini adalah:

  • docker run
  • docker start
  • docker exec
  • docker attach

Berikut cara melampirkan ke wadah dan kemudian menggunakan Ctrl-d , diikuti dengan garis bawah, untuk melepaskan:

docker attach my-container --detach-keys="Ctrl-d,_"

--detach-keys flag menggunakan format urutan kunci yang sama dengan detachKeys opsi konfigurasi. Bendera menimpa docker.json . Anda pengaturan; ini pada gilirannya menimpa urutan Ctrl-P/Ctrl-Q default Docker.

Melepaskan Saat Urutan Keyboard Tidak Berfungsi

Terkadang Anda mungkin menemukan proses penampung yang menolak untuk melepaskan, bahkan saat Anda mengeluarkan urutan keyboard. Ini dapat terjadi jika aliran input container tidak terhubung ke terminal Anda (-i flag) atau tidak memiliki pseudo-TTY yang dialokasikan (-t bendera). Anda juga dapat menemukan masalah ini jika proses penampung Anda menangani urutan kunci pelepasan dan Anda tidak menimpanya saat Anda melampirkannya.

Masih mungkin untuk melepaskan terminal Anda dari wadah dalam keadaan ini. Anda perlu membuka sementara jendela shell lain dan menggunakannya untuk mematikan docker.attach proses yang membuat lampiran tetap aktif.

Pertama-tama temukan ID proses dari proses lampiran:

ps -ef | grep attach

Gunakan output dari ps untuk mengidentifikasi docker.attach proses yang Anda butuhkan untuk membunuh. Perintah di CMD kolom harus mengidentifikasi lampiran yang Anda cari. Catat nomor PID yang relevan dan gunakan kill perintah untuk mematikan proses ini:

kill -9 <PID>

Anda akan melihat shell asli Anda terlepas dari wadah Docker Anda dan kembali ke status operasi normal. Anda sekarang dapat menutup cangkang kedua dan melanjutkan menggunakan yang asli.

Teknik ini bekerja dengan mematikan proses Docker CLI yang menghubungkan terminal ke container, bukan proses di dalam container yang membuatnya tetap berjalan. Terminal asli Anda dapat digunakan kembali dan wadah tetap menyala.

Menyambungkan kembali ke Container Anda

Anda dapat memasang kembali ke wadah menggunakan docker attach memerintah. Ini secara otomatis melampirkan input, output, dan aliran kesalahan terminal Anda ke wadah yang ditentukan:

docker attach my-container

Ketiga aliran terhubung secara default. Anda dapat menghilangkan aliran input dengan meneruskan --no-stdin bendera. Keluaran kontainer akan dialirkan ke terminal Anda, tetapi Anda tidak akan dapat memberikan masukan apa pun.

Gunakan urutan keyboard lagi untuk melepaskan, atau Ctrl-C untuk menghentikan proses dan wadah. Jika Anda menggunakan Ctrl-C atau exit , docker attach akan mengatur $? variabel di shell Anda dengan benar sehingga Anda dapat memeriksa kode keluar container.

Ringkasan

Cara yang benar untuk melepaskan dari wadah Docker adalah urutan keyboard yang cukup tidak jelas yang menjatuhkan Anda kembali ke shell Anda. Anda dapat menyesuaikan urutan ini untuk meningkatkan daya ingat dan menghindari konflik dengan penanganan keyboard container Anda.

Urutan pelepasan keyboard bisa menjadi tidak efektif dalam beberapa keadaan. Masih mungkin untuk melepaskan dari wadah Anda dengan mengidentifikasi dan mematikan proses yang mendukung lampiran. Perintah Unix biasa seperti ps dan kill harus digunakan dalam skenario ini.

Terakhir, jika Anda ingin wadah Anda terlepas secara permanen, mulailah dengan -d flag (docker run -d my-image:latest ). Ini akan mengirim wadah langsung ke latar belakang dan tidak mengeluarkan output ke shell Anda. Kontainer yang terpisah selalu terlihat menggunakan docker ps perintah dan dapat dihentikan dengan docker stop my-container .


Docker
  1. Cara menginstal WordPress menggunakan Docker

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Mendaftar Kontainer Docker

  1. Cara Menjalankan MySQL Dalam Wadah Docker

  2. Cara Keluar dari Kontainer Docker

  3. Cara Mengakses Namespace Jaringan Docker Container dari Host

  1. Cara SSH Ke Wadah Docker

  2. Cara Menginstal Vim di Wadah Docker

  3. Cara membuat gambar khusus dari wadah Docker