Saya melihat bahwa Docker telah menambahkan sesuatu yang disebut kebijakan memulai kembali untuk menangani restart wadah jika, misalnya, reboot.
Meskipun ini sangat berguna, saya melihat bahwa perintah kebijakan restart hanya berfungsi dengan baik docker run
dan tidak docker start
. Jadi pertanyaan saya adalah:
Apakah ada cara untuk menambahkan kebijakan memulai kembali ke wadah yang sudah dibuat sebelumnya?
Jawaban:
Dalam versi terbaru dari buruh pelabuhan (per 1.11) Anda memiliki
update
perintah:sumber
docker update --restart always <container>
docs.docker.com/engine/admin/start-containers-automaticallydocker update
menerima beberapa ID kontainer, jadi tidak perluxargs
sama sekali, cukup lakukandocker update --restart=always $(docker ps -q)
.Ada dua pendekatan untuk memodifikasi RestartPolicy:
docker commit
wadah Anda sebagai gambar baru, berhenti & rm wadah saat ini, dan mulai wadah baru dengan gambar.sumber
docker update
memungkinkan untuk memodifikasi kebijakan mulai ulang hanya pada 1,11+Menggunakan
--restart=always
kebijakan akan menangani restart wadah yang ada jika reboot.Masalahnya adalah bahwa jika ada beberapa wadah dengan
--restart=always
ketika Anda menjalankan gambar dari versi yang lebih baru seperti yang dibahas dalam buruh pelabuhan - bagaimana Anda menonaktifkan restart otomatis pada wadah? .Jadi dalam hal ini lebih baik untuk memilih opsi lain: --mulai kembali kebijakan kecuali dihentikan .
Kebijakan ini tidak akan bertentangan dengan
docker run --rm
tetapi seperti yang dijelaskan dalam dokumentasi buruh pelabuhan :Jadi ketika menggunakan
--restart unless-stopped
kebijakan ini , untuk memastikan restart berfungsi jika itu berhenti secara tidak sengaja ketika Anda menutup terminal, lakukan sekali di terminal lain seperti di bawah ini:Tunggu sampai proses pembunuhan berakhir di shell sebelumnya, lalu tutup dan tinggalkan ( jangan keluar ).
Dan periksa lagi di terminal yang tersisa jika wadah masih berjalan:
Jika masih berjalan, Anda dapat mem-boot ulang dengan aman dan memeriksa kembali bahwa aplikasi sedang restart dan melihat buruh pelabuhan Anda bersih tanpa banyak wadah yang tidak digunakan.
sumber