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

Cara Menggunakan Kebijakan Restart Docker agar Kontainer Tetap Berjalan

Docker memberi Anda beberapa opsi untuk mengelola siklus hidup container Anda. Kontainer biasanya tidak memulai ulang secara otomatis setelah dihentikan. Dengan kebijakan mulai ulang, Anda dapat mengontrol siklus hidup container individual.

Kebijakan mulai ulang akan digunakan setiap kali penampung berhenti berjalan. Docker juga melihat kebijakan restart ketika daemon dijalankan. Anda dapat menggunakan mekanisme ini untuk membawa container ke host Anda setelah reboot.

Kebijakan yang Tersedia

Saat ini ada empat kebijakan mulai ulang yang berbeda:

  • no – Kebijakan ini tidak akan pernah secara otomatis memulai penampung. Ini adalah kebijakan default untuk semua container yang dibuat dengan docker run .
  • always – Docker akan memastikan container selalu berjalan. Jika wadah berhenti, itu akan segera dimulai ulang. Anda masih dapat menghentikan container secara manual dengan docker stop tetapi Docker akan memunculkannya kembali saat daemon dimulai ulang.
  • on-failure – Wadah akan dimulai ulang jika berhenti karena kesalahan. Docker tidak akan memunculkan container setelah daemon dimulai ulang.
  • unless-stopped – Fungsinya mirip dengan always . Perbedaannya adalah Docker tidak akan pernah memulai ulang penampung jika telah dihentikan secara manual.

Anda biasanya akan menggunakan salah satu dari tiga opsi terakhir untuk beban kerja produksi. Karena wadah Docker sering digunakan untuk layanan latar belakang yang berjalan lama, Anda biasanya ingin mereka memulai ulang setiap kali terjadi kesalahan. no kebijakan yang paling cocok untuk penggunaan pembangunan lokal. Ini juga berguna untuk wadah utilitas yang menjalankan satu executable dan kemudian dihentikan.

Mungkin sulit untuk memutuskan kebijakan restart mana yang akan digunakan. always seringkali merupakan pilihan paling alami tetapi perilaku restart daemon dapat dengan mudah diabaikan. Jika Anda ingin container tetap berhenti secara andal setelah Anda menjalankan docker stop , Anda harus menggunakan unless-stopped .

Docker mendeteksi kesalahan berdasarkan kode keluar yang dipancarkan dari proses latar depan container. Kode keluar 1 atau lebih tinggi ditafsirkan sebagai kesalahan. Ini cocok dengan penanganan kode keluar Unix, di mana hanya 0 mewakili eksekusi yang berhasil.

Saat Docker me-restart container Anda, itu sama dengan menjalankan docker run lagi. Itu berarti ENTRYPOINT gambar itu skrip akan dipanggil. Sistem bootstrap harus selalu tahan terhadap beberapa pemanggilan.

Menerapkan Kebijakan Mulai Ulang

Anda dapat memulai container dengan kebijakan restart tertentu dengan meneruskan --restart tandai ke docker run :

docker run --name httpd --restart always httpd:latest

Jika Anda menggunakan Docker Compose, tambahkan restart ke docker-compose.yml . Anda :

services:
  httpd:
    image: httpd:latest
    restart: always

Anda dapat mengubah kebijakan restart container yang ada menggunakan docker update . Berikan nama wadah ke perintah. Anda dapat menemukan nama container dengan menjalankan docker ps -a .

docker update --restart-policy unless-stopped httpd

Anda dapat menggunakan docker update dengan container yang sedang berjalan atau berhenti.

Mulai Ulang Perulangan

Docker menyertakan beberapa perlindungan terhadap loop restart terus-menerus. Yang pertama adalah penundaan waktu wajib sebelum kebijakan restart diaktifkan. Docker tidak akan mulai memantau restart sampai container telah berjalan setidaknya selama 10 detik. Ini mencegah penampung yang gagal untuk memulai ulang secara terus-menerus.

Perilaku spesialis lainnya menyangkut docker stop memerintah. Docker akan selalu menghormati penggunaan docker stop , sehingga container tidak langsung restart setelah Anda menjalankan perintah. Jika Anda benar-benar ingin me-restart container, gunakan docker restart sebagai gantinya.

Membatasi Percobaan Ulang Ulang

on-failure kebijakan mulai ulang memungkinkan Anda menentukan berapa banyak percobaan ulang yang harus dilakukan. Docker akan menyerah dan meninggalkan wadah dalam keadaan berhenti jika gagal untuk memulai beberapa kali berturut-turut.

docker run httpd:latest --restart on-failure:5

Dalam contoh ini, Docker akan mencoba me-restart container lima kali setelah kegagalan (kode keluar bukan nol). Jika penampung gagal untuk memulai pada upaya kelima, tidak ada lagi percobaan yang akan dilakukan. Opsi ini berguna untuk kontainer di mana kesalahan awal yang terus-menerus tidak mungkin diselesaikan tanpa intervensi manual.

Menyelidiki Mengapa Kontainer Berhenti

Jika Anda perlu mengetahui mengapa sebuah container berhenti, jalankan docker ps -a . Ini akan menampilkan detail semua container Anda, apakah berhenti atau berjalan. Temukan wadah target dan lihat di kolom "Status". Untuk kontainer yang dihentikan, kode keluar akan ditampilkan dalam tanda kurung. Jika kode lebih besar dari nol, penampung dihentikan karena kesalahan.

Anda harus merujuk ke dokumentasi untuk proses yang berjalan di wadah untuk menentukan arti dari kode kesalahan individual. Namun, Anda sering kali bisa mendapatkan wawasan tentang penyebab error dengan mengambil log container. Log tetap tersedia setelah penampung dihentikan.

docker logs my-container

Aliran log menggabungkan output standar penampung dan aliran kesalahan standar. Jika kesalahan telah dicatat, Anda akan melihatnya di beberapa baris keluaran terakhir.

Ringkasan

Kebijakan mulai ulang membantu memastikan wadah Docker Anda ada saat Anda membutuhkannya. Default no kebijakan tidak cocok untuk sebagian besar beban kerja produksi. Anda tidak ingin kontainer Anda tetap berhenti jika rusak!

Penggunaan salah satu dari tiga kebijakan yang dapat memulai ulang membuat container Anda lebih tahan terhadap boot ulang perangkat keras dan penghentian yang tidak terduga. Docker akan menjaga ketersediaan layanan jika terjadi crash container.


Docker
  1. Cara Memperbarui Wadah Docker yang Berjalan Secara Otomatis

  2. Cara Membuat, Mendaftar &Menghapus Wadah Docker di Linux

  3. Cara Menjaga Kontainer Docker Tetap Berjalan Saat Daemon Berhenti

  1. Cara Menggunakan Tulis Docker

  2. Cara Menjalankan Perintah di Running Docker Container

  3. Cara Mendaftar Kontainer Docker

  1. Cara Berbagi Data Antar Wadah Docker

  2. Cara mencadangkan dan memulihkan wadah Docker

  3. Cara Menjeda dan Melanjutkan Wadah Docker