Mengalami masalah dengan Docker stop container? Menemukan cara yang benar untuk menghentikan wadah itu sulit dengan kemampuan untuk membuat banyak wadah yang berbeda. Dalam artikel ini, Anda akan mempelajari perintah Docker untuk menghentikan sebuah container atau semua container.
Baca terus untuk mempelajari lebih lanjut!
Prasyarat
Untuk mengikuti tutorial ini, pastikan Anda memiliki yang berikut:
- Windows 10 – Tutorial menggunakan Windows untuk menjalankan Docker, tetapi Anda juga dapat menerapkan langkah umum yang sama ke Linux atau macOS.
- Desktop Docker – Tutorial ini menggunakan versi 3.5.2. Mesin buruh pelabuhan tersedia jika Anda menggunakan Linux karena GUI tidak.
- Container atau container Docker yang sedang berjalan.
Mengakhiri Kontainer dengan perintah docker stop Containers
Mari kita mulai dengan perintah pertama:docker stop
perintah container dan cara menyelesaikannya dengan menghentikan container.
Misalnya, mungkin Anda perlu menghentikan wadah yang sedang berjalan dengan nama mystifying_hofstadter
dan ID fb66ed502096
. Seperti yang ditunjukkan pada contoh di bawah, hentikan container dengan docker stop
perintah container.
# Stop the container via the name
docker stop mystifying_hofstadter
# Stop the container via the ID (same container)
docker stop fb66ed50209
Bagaimana jika Anda memiliki beberapa container yang sedang berjalan, dan Anda ingin menghentikannya? docker stop
perintah container mendukung penghentian beberapa ID container, satu per satu.
Pertama, daftar semua container melalui docker ps
perintah dan berikan ID penampung ke docker stop
perintah container, seperti yang ditunjukkan di bawah ini.
# List all running containers
docker ps
# Stop the following Docker containers via the container ID
docker stop a427a21c5558 e9dbd816f24c 31269ef5999e
Bagaimana jika Anda ingin menghentikan semua container yang sedang berjalan tanpa mengambil ID container secara manual dan meneruskannya ke docker stop
? docker ps -q
perintah akan mencapai itu. -q
parameter docker ps
perintah hanya mengeluarkan ID wadah.
# Create three containers. A semi-colon separates each command
docker run -d -t ubuntu; docker run -d -t ubuntu; docker run -d -t ubuntu
# List all running containers
docker ps -q
# Retrieve all running container IDs and pass those to docker stop
docker stop $(docker ps -q)
$(docker ps -q)
konstruksi di atas adalah sub-ekspresi di Bash di Linux dan PowerShell di Windows. Sebuah sub-ekspresi menginstruksikan shell untuk memproses satu set perintah,docker ps -q
, pertama dan kemudian kembalikan set hasil ke perintah aslidocker stop
.
docker stop
perintah container menggunakan sinyal SIGTERM. Sinyal Linux menginformasikan suatu proses dari suatu peristiwa, tetapi terserah pada proses untuk memutuskan bagaimana bertindak pada sinyal yang diberikan.
Saat menggunakan sinyal SIGTERM, Docker menggunakan sinyal tersebut untuk menghentikan proses dengan anggun dengan menunggu 10
default detik sebelum mengirim sinyal SIGKILL, yang segera menghentikan proses.
Menghentikan Wadah Menggunakan Sinyal Proses
Anda mempelajari tentang perilaku default Docker (sinyal berhenti), dengan docker stop
perintah container, saat menghentikan container. Tetapi Anda mungkin tidak menginginkan perilaku default. Sebagai gantinya, Anda dapat menginstruksikan Docker untuk menggunakan sinyal stop alternatif.
Dengan docker run
perintah --stop-signal
flag, Anda dapat menentukan sinyal berhenti saat memulai wadah. Bendera ini menetapkan sinyal yang akan dikirim ke container yang sedang berjalan saat Anda ingin menghentikannya.
Pada contoh di bawah, --stop-signal
flag mengambil nilai SIGQUIT
, yang memberi tahu Docker untuk mengirim sinyal SIGQUIT ketika tiba waktunya untuk menghentikan container. Contoh juga menggunakan parameter berikut:
d
– Menjalankan wadah dalam mode terpisah (latar belakang). Mode detached tidak akan mengizinkan container untuk langsung berinteraksi dengan pengguna karena proses berjalan di latar belakang.t
– mengalokasikan konsol Pseudo-TTY (PTY), yang mengemulasi konsol terminal nyata dalam wadah dan menghentikan wadah Ubuntu agar tidak segera keluar. Wadah Ubuntu dalam contoh memerlukan konsol PTY untuk tetap aktif di latar belakang.- “nama gambar” – Gambar Docker mana yang menyediakan wadah dari, dalam hal ini,
ubuntu
gambar.
docker run -d -t --stop-signal SIGQUIT ubuntu
Anda juga dapat menentukan sinyal stop menggunakan Dockerfile, yang memberi tahu Docker cara membuat container. Anda dapat menambahkan entri ke Dockerfile yang menentukan sinyal berhenti dengan
STOPSIGNAL SIGQUIT
, Misalnya. Anda dapat menggantiSIGQUIT
dengan sinyal berhenti apa pun yang Anda inginkan.
Keluar dari Kontainer Segera dengan docker kill
Akan ada saat-saat ketika Anda ingin keluar dari wadah tanpa memberi mereka masa tenggang. docker kill
perintah segera menghentikan wadah.
Contoh di bawah melewati wadah dengan ID 2aa318273db5
ke docker kill
. Wadah akan segera keluar melalui sinyal SIGKILL. Wadah tidak akan diizinkan keluar dengan anggun. Sebagai hasil dari perintah tersebut, container akan keluar, dan ID container akan ditampilkan.
docker kill 2aa318273db5
Docker kill semua container dengan perintah
docker kill $(docker ps -q)
. Perhatikan bahwa(docker ps -q
) adalah sub-ekspresi di sini.
Menghentikan dan Menghapus Kontainer dengan docker rm
Secara default, saat Anda membuat wadah, wadah itu dibuat sama seperti sebelumnya:itu idempoten. Menghapus wadah akan berdampak minimal, dan dengan mengingat hal itu, docker rm
dapat menghentikan paksa dan mengeluarkan wadah. Docker mengeluarkan SIGKILL
memberi sinyal ke proses utama dan menghapus container dari daftar container yang tersedia di instalasi Docker Anda.
Jika wadah harus menyimpan file internal yang diubah atau statusnya harus disimpan, maka menghapus wadah akan menghancurkan perubahan tersebut. Waspadalah terhadap kemungkinan kesalahan!
Dalam contoh berikut, mungkin Anda telah memulai wadah yang diberi nama kind_galileo
. Sebelum mengeluarkan wadah, wadah harus dihentikan, seperti yang ditunjukkan di bawah ini. docker ps -a
perintah menampilkan status Exited
untuk wadah contoh.
Sekarang wadah berhenti mengeluarkan docker rm
perintah akan menghapus wadah sepenuhnya.
docker rm kind_galileo
Alih-alih menghentikan wadah untuk kemudian menghapus wadah, kombinasi --force
dan docker rm
akan berhenti dan mengeluarkan wadah dalam satu operasi. Wadahnya, laughing_elion
, tidak akan lagi tersedia untuk dijalankan.
docker rm --force laughing_elion
Jika Anda tidak menentukan
--force
perintah, Anda akan menemukan pesan kesalahanError response from daemon: You cannot remove a running container...
Menghentikan Container Docker dengan Docker Compose
Perintah Docker biasanya digunakan pada satu wadah, tetapi Anda dapat membuat layanan dengan beberapa wadah yang bekerja bersama satu sama lain. Alat Docker Compose memungkinkan Anda mengonfigurasi layanan yang terdiri dari beberapa wadah untuk bekerja bersama.
Karena penampung dalam suatu layanan dirancang untuk bekerja bersama, yang terbaik adalah menghentikan seluruh layanan itu sendiri dengan anggun daripada penampung individu mana pun.
Jika Anda memiliki layanan yang berjalan dengan beberapa kontainer, [docker-compose stop]
menghentikan layanan tanpa melepas wadah atau layanan. Ikuti di bawah ini untuk membuat layanan Docker Compose, memulai layanan, dan akhirnya menghentikan layanan dengan anggun.
1. Buat direktori untuk menyimpan file konfigurasi Anda. Dalam contoh ini, direktori C:\Articles\Ubuntu akan menyimpan file.
mkdir C:\Articles\Ubuntu
2. Selanjutnya, buat file docker-compose.yml file, yang berisi konfigurasi berikut. File Docker Compose di bawah ini membuat layanan dengan dua kontainer Ubuntu, dan saat dibuka, kontainer tidak langsung keluar.
# The specification version of docker-compose
version: "3.9"
# The collection of applications composing this service
services:
# First Ubuntu Container
container1:
image: ubuntu
# Same as the -t option and allocates a Psuedo-TTY, so the container does not immediately exit.
tty: true
# Second Ubuntu Container
container2:
image: ubuntu
tty: true
3. Dalam sesi terminal, navigasikan ke direktori file konfigurasi Docker kustom Anda, yang dalam contoh ini adalah C:\Articles\Ubuntu . Jalankan docker-compose up -d
untuk menghasilkan dan memulai layanan yang dibuat pada langkah sebelumnya di latar belakang seperti yang ditunjukkan oleh -d
pilihan.
4. Di sesi terminal dan direktori yang sama, jalankan perintah docker-compose stop
untuk mengakhiri layanan dan wadah dengan anggun.
docker-compose
perintah, sepertidocker
perintah, juga memilikirm --force
dankill
parameter.docker-compose
parameter bekerja pada layanan alih-alih satu wadah.docker-compose kill
perintah juga mengambil opsi-s
opsi untuk menentukan sinyal berhenti.
Kesimpulan
Kontainer Docker adalah alat yang ampuh untuk menciptakan lingkungan yang unik dan tersegmentasi untuk penggunaan pengembangan dan produksi. Dalam artikel ini, Anda telah mempelajari beberapa cara Docker menghentikan satu atau lebih, bahkan semua, container. Anda juga mempelajari tentang sinyal berhenti default yang digunakan Docker dan cara mengubahnya.
Dengan pengetahuan ini, Anda sekarang mengetahui seluk beluk menghentikan kontainer Docker dan bagaimana tidak mengacaukannya ketika saatnya untuk berhenti menjalankan kontainer. Bagaimana Anda berencana untuk menghentikan kontainer Anda mulai sekarang, memiliki pengetahuan baru ini?