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

Cara Menjaga Kontainer Docker Tetap Berjalan Saat Daemon Berhenti

Ketika Docker berakhir, semua container Anda dihentikan. Instalasi default tidak membiarkan container berjalan kecuali daemon juga aktif. Berikut cara meminimalkan waktu henti beban kerja dengan menjaga container tetap hidup selama daemon outage.

Mengapa Ini Penting?

Docker telah terbukti sebagai sistem andal yang mampu mendukung solusi dalam produksi. Itu tidak berarti itu sempurna. Anda masih dapat mengalami error yang membuat daemon tidak dapat bekerja, membuat container Anda offline.

Dalam skenario lain, manajer paket sistem operasi Anda mungkin memperbarui Docker secara otomatis, menyebabkan daemon restart dan periode waktu henti yang singkat. Idealnya, situasi ini dapat diselesaikan tanpa berdampak pada beban kerja Anda. Sebagai daemon hanya mengelola container, mengimplementasikan perintah seperti docker run dan docker rm , tidak ada kebutuhan bawaan untuk itu bertahan selama periode intervensi dalam siklus hidup container.

Pemulihan Langsung Kontainer

Docker mendukung sistem yang disebut "live restore" yang memungkinkan hal ini. Alih-alih menghentikan kontainer selama penonaktifan daemon, Docker akan membuatnya tetap berjalan. Ini akan melanjutkan dari tempat terakhirnya setelah dimulai ulang.

Pemulihan langsung harus diaktifkan secara manual. Anda dapat menggunakannya satu kali dengan menjalankan dockerd dengan --live-restore flag :

sudo dockerd --live-restore

Untuk mengaktifkan pemulihan langsung secara permanen, tambahkan ke file konfigurasi daemon Docker Anda. Ini biasanya ditemukan di /etc/docker/daemon.json . Anda harus membuat file jika belum ada.

{
    "live-restore": true
}

Selanjutnya Anda perlu menginstruksikan Docker untuk memuat ulang konfigurasinya. Muat ulang tidak akan memengaruhi penampung Anda, tidak seperti daemon yang dimulai ulang secara penuh.

sudo systemctl reload docker

Pemulihan langsung sekarang harus diaktifkan. Anda dapat mengujinya dengan menghentikan daemon Docker.

sudo systemctl stop docker

Setiap container yang berjalan harus tetap aktif, meskipun daemon dimatikan. Anda tidak akan dapat menggunakan docker perintah, karena koneksi daemon akan hilang, tetapi container akan tetap berjalan dan akan mempertahankan koneksi jaringannya.

Docker akan secara otomatis mendeteksi container yang ada saat restart. Anda dapat melanjutkan dari bagian terakhir yang Anda tinggalkan, tanpa harus mengalami downtime.

Menangani Sustained Daemon-less Running

Menjalankan container tanpa koneksi daemon aktif seharusnya tidak memiliki konsekuensi serius, bahkan selama periode waktu yang berkelanjutan. Namun, Anda akan menemukan log mulai hilang selama penghentian daemon yang berkepanjangan.

Kontainer Docker menyalurkan log mereka ke buffer first-in first-out (FIFO). Daemon Docker membaca konten buffer untuk membuat file log tetap yang Anda lihat dengan docker logs .

Ukuran buffer default hanya 64K sehingga dapat habis jika daemon tidak aktif membaca isinya. Saat buffer terisi, tidak ada lagi log yang dapat ditangani sampai daemon menyelesaikan buffer flush. Anda dapat menambah ukuran buffer dengan mengedit nilai /proc/sys/fs/pipe-max-size .

Peringatan Pemulihan Langsung

Pemulihan Langsung harus mencakup sebagian besar skenario di mana daemon Docker dimatikan dan kemudian pulih. Ini termasuk pembaruan Docker tetapi hanya di antara rilis tambalan kecil. Jika Anda menginstal versi Docker utama baru (seperti 19.03 ke 20.10 ), Live Restore tidak akan digunakan dan daemon Docker akan selalu dimulai ulang.

Anda harus berhati-hati menggunakan Live Restore sebagai cara untuk mengedit pengaturan daemon Docker dengan cepat. Mengubah beberapa opsi, seperti alamat IP jembatan, akan mencegah kontainer memulihkan dengan benar saat daemon dimulai ulang. Jika ini terjadi, Anda harus menghentikan semua penampung yang terpengaruh secara manual dan menggantinya dengan yang baru. Situasi ini juga dapat muncul jika sistem operasi Anda menetapkan pengaturan jaringan yang berbeda setelah reboot.

Pemulihan Langsung dimaksudkan untuk digunakan selama pembaruan Docker dan pemadaman daemon yang tidak direncanakan. Jika Anda perlu mengedit pengaturan daemon, coba rencanakan waktu henti sebagai gantinya. Anda juga dapat menggunakan systemctl reload docker untuk memuat ulang file konfigurasi tanpa memulai ulang daemon sepenuhnya.

Belum ada Pemulihan Langsung untuk wadah berbasis Windows. Anda bisa gunakan Pemulihan Langsung di Windows dengan wadah berbasis Linux. Ini terintegrasi dengan Docker Desktop dan diaktifkan melalui Preferences> Daemon> Advanced.

Kesimpulan

Live Restore memungkinkan Anda meminimalkan waktu henti yang mengganggu dengan menjaga container tetap berjalan tanpa adanya daemon Docker. Jika Anda perlu menginstal pembaruan Docker yang mendesak, atau Anda mengalami crash mendadak, beban kerja Anda akan tetap beroperasi saat daemon dimulai ulang.

Mengaktifkan Live Restore adalah langkah praktik terbaik saat menjalankan Docker dalam produksi. Alat analisis konfigurasi mungkin menandai penginstalan yang tidak mengaktifkannya.

Selain menggunakan Live Restore, Anda juga harus memastikan container Anda memiliki kebijakan restart yang sesuai. Menggunakan restart: always akan membuat masing-masing container muncul kembali setelah OS dimulai ulang, atau peluncuran daemon lainnya di mana Live Restore tidak dapat digunakan.


Docker
  1. Cara Menggunakan Tulis Docker

  2. Bagaimana Menghubungkan Kontainer Docker

  3. Bagaimana Melewati Variabel Lingkungan ke Docker Containers

  1. Cara Memperbarui Wadah Docker yang Berjalan Secara Otomatis

  2. Cara Menjalankan Perintah di Running Docker Container

  3. Cara Mendaftar Kontainer Docker

  1. Cara Memangkas Sumber Daya Docker yang Tidak Digunakan

  2. Cara Menggunakan Kebijakan Restart Docker agar Kontainer Tetap Berjalan

  3. Bagaimana cara menentukan nama host untuk wadah yang sedang berjalan?