Docker Stop All Containers: Panduan Langkah demi Langkah
Pelajari cara menghentikan semua container Docker yang sedang berjalan menggunakan perintah sederhana. Ini akan membantu Anda mengelola sumber daya sistem dan merapikan lingkungan Docker Anda.
Menghentikan container satu per satu dapat memperlambat alur kerja pengembangan Anda dan menimbulkan kesalahan saat menangani microservices atau aplikasi multi-container.
Dalam panduan ini, saya akan membahas beberapa metode untuk membantu Anda menghentikan semua container yang sedang berjalan.
Pada akhir tutorial ini, Anda akan dapat:
Memahami bagaimana Docker menangani sinyal dan masa tenggang (grace period)
Menghentikan semua container menggunakan teknik CLI sederhana dan filter
Memanfaatkan Docker Compose dan alias khusus untuk alur kerja yang lebih efisien
Memahami Terminasi Container Docker
Sebelum menghentikan container secara massal, ada baiknya memahami bagaimana Docker mengatur proses shutdown di balik layar.
Manajemen proses berbasis sinyal
Docker menggunakan sinyal Unix untuk meminta penghentian secara tertib (graceful) sebelum melakukan terminasi paksa. Perilaku bawaan perintah docker stop adalah:
Mengirim SIGTERM ke proses utama container.
Menunggu hingga 10 detik (dapat dikonfigurasi dengan -t/--time).
Mengirim SIGKILL jika proses belum keluar.
SIGTERM: Meminta dengan sopan agar proses melakukan pembersihan dan keluar.
Masa tenggang (grace period): Memberi waktu bagi aplikasi untuk membuang log, menutup koneksi, atau menyimpan status.
SIGKILL: Memaksa terminasi segera pada proses yang tidak responsif.
Mekanisme command-line interface (CLI)
Secara bawaan, docker stop menangani satu container pada satu waktu. Anda dapat memperluasnya untuk menghentikan banyak container menggunakan fitur shell.
# Stop a single container named my_containerdocker stop my_containerDidukung oleh
Perintah ini mengirim SIGTERM ke my_container dan menunggu 10 detik bawaan sebelum mengirim SIGKILL jika diperlukan.
# Stop all running containers at oncedocker stop $(dockerps-q)Didukung oleh
Di sini, docker ps -q mencantumkan ID semua container yang sedang berjalan; ID tersebut diteruskan ke docker stop, yang mematikan container secara berurutan.
Tangkapan layar terminal yang menampilkan output docker ps -q dialirkan ke docker stop
Hentikan secara manual proses anak dockerd yang tersisa jika masih bertahan.
Kasus nyata: Dalam salah satu proyek, saya menggunakan docker kill pada container basis data saat migrasi macet. Penghentian mendadak mencegah DB membuang log transaksi, sehingga merusak tabel InnoDB. Kami harus memulihkan dari cadangan dan memutar ulang binlog, mengakibatkan lebih dari 30 menit downtime. Untuk menghindarinya, utamakan docker stop dengan batas waktu yang diperpanjang atau tambahkan penangan SIGTERM yang tepat di aplikasi Anda.
Galat permission denied
Menjalankan perintah Docker tanpa hak istimewa yang tepat sering memicu galat:
Tambahkan awalan sudo pada perintah atau jalankan sebagai pengguna dalam grup docker.
Tambahkan pengguna Anda ke grup docker dan masuk kembali:
Setelah keluar lalu masuk kembali, Anda dapat menjalankan perintah Docker tanpa sudo. Di lingkungan CI, pastikan pengguna runner memiliki keanggotaan grup Docker untuk menghindari kegagalan pipeline.
Pertimbangan khusus Windows
Di Windows PowerShell, bungkus subperintah dalam tanda kurung dan jalankan sebagai Administrator:
Menjalankan PowerShell dengan hak istimewa yang ditingkatkan mencegah masalah firewall atau kontrol akses. Jika Anda melihat galat TLS handshake, verifikasi bahwa konfigurasi daemon Docker Desktop cocok dengan lingkungan PowerShell Anda.
Kesimpulan
Menghentikan semua container Docker Anda secara efisien menghemat waktu, menghemat sumber daya, dan meminimalkan kesalahan manusia dalam alur kerja pengembangan Anda. Anda dapat menjaga lingkungan tetap bersih dan prediktif dengan memahami penanganan sinyal Docker, memanfaatkan filter CLI, menggunakan Docker Compose, dan membuat alias sederhana.
Selamat berkontainer—semoga alur kerja Docker Anda bersih dan efisien!
FAQs
What exit code does docker stop return? ⌄
Jika berhasil, docker stop mengembalikan 0. Kode keluar non-nol menunjukkan satu atau lebih container gagal dihentikan.
Can I preview which containers will be stopped before running the command? ⌄
Ya—jalankan docker ps atau docker ps -q untuk mencantumkan container yang berjalan dan memverifikasi ID atau nama sebelum mengeksekusi docker stop.
How do restart policies affect stopped containers?⌄
Container dengan kebijakan restart seperti always akan mulai ulang secara otomatis setelah dihentikan. Hapus atau ubah kebijakan dengan docker update --restart=no <container> jika Anda ingin tetap dihentikan.
Is there a way to stop containers by network or volume? ⌄
Meskipun Docker tidak langsung memfilter berdasarkan jaringan atau volume pada docker stop, Anda dapat mengombinasikan docker ps --filter "network=<name>" atau docker ps --filter "volume=<name>" dengan substitusi perintah.
How can I integrate docker stop into a CI/CD pipeline?⌄
Integrasikan perintah stop ke dalam skrip build atau job CI—gunakan flag seperti --signal dan filter untuk penghentian terarah, lalu lanjutkan dengan perintah pembersihan (docker system prune) dalam pipeline yang sama.
Can I restart all stopped containers afterward?⌄
Ya, gunakan docker start $(docker ps -a -q) untuk memulai ulang semua container, termasuk yang sebelumnya dihentikan.
Will stopping all containers remove them?⌄
Tidak, menghentikan container tidak menghapusnya. Container tetap ada di sistem Anda hingga Anda menghapusnya dengan docker rm.
How can I automate stopping containers daily?⌄
Gunakan cron job dengan perintah docker stop $(docker ps -q) untuk menjadwalkan penghentian otomatis.
Does docker stop affect volumes or networks?⌄
Tidak, menghentikan container tidak memengaruhi volume atau jaringan yang terpasang—semuanya tetap utuh.
Can I exclude some containers from being stopped?⌄
Anda dapat menghentikan container secara selektif dengan menggunakan docker ps beserta filter atau mengecualikan ID container tertentu dari perintah.
What tools can help manage containers beyond CLI commands?⌄
Alat seperti Portainer atau Docker Desktop menawarkan manajemen berbasis GUI, sehingga pengendalian container lebih mudah bagi pemula.
Saya seorang data engineer dan pembangun komunitas yang bekerja lintas pipeline data, cloud, dan perkakas AI sambil menulis tutorial praktis dan berdampak tinggi untuk DataCamp dan pengembang yang sedang berkembang.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Pelajari kekuatan Docker dan Kubernetes, jalur interaktif ini akan memungkinkan Anda untuk membangun dan mengimplementasikan aplikasi di lingkungan modern.
Menghentikan container satu per satu dapat memperlambat alur kerja pengembangan Anda dan menimbulkan kesalahan saat menangani microservices atau aplikasi multi-container.
Dalam panduan ini, saya akan membahas beberapa metode untuk membantu Anda menghentikan semua container yang sedang berjalan.
Pada akhir tutorial ini, Anda akan dapat:
Memahami Terminasi Container Docker
Sebelum menghentikan container secara massal, ada baiknya memahami bagaimana Docker mengatur proses shutdown di balik layar.
Manajemen proses berbasis sinyal
Docker menggunakan sinyal Unix untuk meminta penghentian secara tertib (graceful) sebelum melakukan terminasi paksa. Perilaku bawaan perintah
docker stopadalah:SIGTERMke proses utama container.-t/--time).SIGKILLjika proses belum keluar.Mekanisme command-line interface (CLI)
Secara bawaan,
docker stopmenangani satu container pada satu waktu. Anda dapat memperluasnya untuk menghentikan banyak container menggunakan fitur shell.Perintah ini mengirim SIGTERM ke
my_containerdan menunggu 10 detik bawaan sebelum mengirim SIGKILL jika diperlukan.Di sini,
docker ps -qmencantumkan ID semua container yang sedang berjalan; ID tersebut diteruskan kedocker stop, yang mematikan container secara berurutan.Tangkapan layar terminal yang menampilkan output
docker ps -qdialirkan kedocker stopUntuk pemahaman yang lebih mendalam tentang konsep ini, pertimbangkan untuk mempelajari Konsep Kontainerisasi dan Virtualisasi.
Perbandingan docker stop dan docker kill
Memilih antara penghentian yang tertib dan yang paksa membantu Anda menghindari konsekuensi yang tidak diinginkan.
Penghentian tertib vs. langsung
Perintah
Sinyal
Perilaku
Kasus penggunaan
docker stop
SIGTERM → SIGKILL setelah batas waktu
Shutdown tertib dengan waktu pembersihan
Pemeliharaan rutin atau pembaruan
docker kill
SIGKILL
Terminasi langsung
Perbaikan darurat untuk container yang hang
Kustomisasi sinyal
Kedua perintah mendukung flag
--signaluntuk mengganti nilai bawaan:Perintah di atas memungkinkan proses menangkap
SIGINTuntuk pembersihan khusus.Seperti terlihat di atas, Anda dapat menggunakan sinyal khusus ketika aplikasi Anda menerapkan hook shutdown spesifik.
Strategi Lanjutan untuk Menghentikan Container
Memfilter dan mengotomatiskan penghentian container memungkinkan alur kerja DevOps yang lebih presisi, terutama di lingkungan skala besar.
Setelah memahami dasar-dasarnya, Anda dapat menyetel dengan lebih halus container mana yang dihentikan dan bagaimana prosesnya diotomatisasi.
Terminasi container dengan filter
Filter memungkinkan Anda menargetkan container berdasarkan atribut seperti nama image, status, atau label:
Perintah di atas hanya menghentikan container yang berbasis pada
my_image:latest, memberikan kontrol terarah dalam proyek multi-layanan.Kasus penggunaan:
--filter "ancestor=test:latest")--filter "label=env=dev")Tangkapan layar terminal penggunaan
docker ps --filterPembersihan otomatis dengan Docker Compose
Jika layanan Anda didefinisikan dalam file
docker-compose.yml, satu perintah akan menghentikan semua container terkait:Ini menghormati dependensi layanan dan batas waktu yang dikonfigurasi untuk shutdown yang bersih.
Untuk teknik yang lebih lanjut, Anda dapat mempertimbangkan kursus Intermediate Docker.
Optimasi alur kerja berbasis alias
Untuk tugas berulang, alias shell mengurangi pengetikan dan perpindahan konteks:
Setelah Anda memuat ulang shell, menjalankan
dsakan menghentikan semua container dalam satu ketukan—ideal untuk pembersihan cepat.Menggunakan alias 'ds' untuk menghentikan semua container yang sedang berjalan di Ubuntu WSL
Praktik Operasional Terbaik
Terapkan rutinitas shutdown yang aman dan pembersihan berkala untuk menjaga lingkungan Anda tetap stabil dan berkinerja baik.
docker killhanya untuk intervensi darurat; hindari inkonsistensi data.-t/--time) berdasarkan kebutuhan pembersihan aplikasi Anda.docker system prune, seperti diuraikan dalam Docker Prune: Panduan Lengkap dengan Contoh Praktik.Memecahkan Masalah Umum
Bahkan perintah yang sederhana pun bisa menemui kendala—berikut cara menanganinya.
Proses zombie dan volume yatim piatu
Terminasi paksa dapat meninggalkan proses usang atau volume yatim piatu, yang mengonsumsi sumber daya host dan ruang disk. Untuk membersihkan:
Perintah ini menghapus semua volume yang tidak direferensikan oleh container mana pun.
Periksa proses daemon Docker yang masih tersisa:
Hentikan secara manual proses anak
dockerdyang tersisa jika masih bertahan.Kasus nyata: Dalam salah satu proyek, saya menggunakan
docker killpada container basis data saat migrasi macet. Penghentian mendadak mencegah DB membuang log transaksi, sehingga merusak tabel InnoDB. Kami harus memulihkan dari cadangan dan memutar ulang binlog, mengakibatkan lebih dari 30 menit downtime. Untuk menghindarinya, utamakandocker stopdengan batas waktu yang diperpanjang atau tambahkan penanganSIGTERMyang tepat di aplikasi Anda.Galat permission denied
Menjalankan perintah Docker tanpa hak istimewa yang tepat sering memicu galat:
sudopada perintah atau jalankan sebagai pengguna dalam grupdocker.dockerdan masuk kembali:Setelah keluar lalu masuk kembali, Anda dapat menjalankan perintah Docker tanpa
sudo. Di lingkungan CI, pastikan pengguna runner memiliki keanggotaan grup Docker untuk menghindari kegagalan pipeline.Pertimbangan khusus Windows
Di Windows PowerShell, bungkus subperintah dalam tanda kurung dan jalankan sebagai Administrator:
Menjalankan PowerShell dengan hak istimewa yang ditingkatkan mencegah masalah firewall atau kontrol akses. Jika Anda melihat galat TLS handshake, verifikasi bahwa konfigurasi daemon Docker Desktop cocok dengan lingkungan PowerShell Anda.
Kesimpulan
Menghentikan semua container Docker Anda secara efisien menghemat waktu, menghemat sumber daya, dan meminimalkan kesalahan manusia dalam alur kerja pengembangan Anda. Anda dapat menjaga lingkungan tetap bersih dan prediktif dengan memahami penanganan sinyal Docker, memanfaatkan filter CLI, menggunakan Docker Compose, dan membuat alias sederhana.
Jelajahi jalur Kontainerisasi dan Virtualisasi dengan Docker dan Kubernetes atau kursus Intermediate Docker untuk memperdalam keahlian kontainerisasi Anda.
Selamat berkontainer—semoga alur kerja Docker Anda bersih dan efisien!