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

Gunakan Docker Stop Containers Tanpa Mengacaukan Segalanya!

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 asli docker 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 mengganti SIGQUIT 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 kesalahan Error 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, seperti docker perintah, juga memiliki rm --force dan kill 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?


Docker
  1. Portainer:Gui yang mudah digunakan untuk menjalankan dan mendapatkan wadah buruh pelabuhan

  2. Cara Menggunakan Gambar Docker, Wadah, dan File Docker Secara Mendalam

  3. Cara Mendaftar Kontainer Docker

  1. Apa itu Doker? Pelajari Cara Menggunakan Wadah – Dijelaskan dengan Contoh

  2. Apa itu Docker (dan wadah Linux?)

  3. Pengantar Kontainer Docker

  1. Cara Menggunakan Tulis Docker

  2. Bagaimana Menghubungkan Kontainer Docker

  3. Cara Menggunakan Perintah Inspeksi Docker