Tampaknya, metode saat ini untuk memulai wadah Docker secara otomatis ( dari Docker 1.2 ) adalah dengan menggunakan kebijakan restart . Ini akan mengontrol bagaimana Docker harus menangani mulai dari wadah pada saat startup dan memulai kembali wadah ketika keluar. Saya telah menggunakan opsi 'selalu' sejauh ini, dan dapat mengonfirmasi bahwa itu membuat Docker memulai wadah secara otomatis saat boot sistem:
sudo docker run --restart=always -d myimage
Kutipan Dokumentasi
Kebijakan Mulai Ulang Menggunakan bendera --restart pada Docker run Anda dapat menentukan kebijakan mulai ulang untuk bagaimana wadah harus atau tidak harus dimulai kembali saat keluar.
tidak - Jangan memulai ulang wadah saat keluar.
on-failure - Mulai ulang wadah hanya jika keluar dengan status keluar bukan nol.
selalu - Selalu mulai ulang wadah terlepas dari status keluar.
Anda juga dapat menentukan jumlah maksimum yang akan dilakukan Docker untuk memulai ulang wadah saat menggunakan kebijakan kegagalan. Standarnya adalah Docker akan mencoba selamanya untuk memulai kembali wadah.
$ sudo docker run --restart=always redis
Ini akan menjalankan wadah redis dengan kebijakan restart selalu sehingga jika wadah keluar, Docker akan restart itu.
$ sudo docker run --restart=on-failure:10 redis
Ini akan menjalankan redis container dengan kebijakan restart on-failure dan jumlah restart maksimum 10. Jika container redis keluar dengan status keluar non-nol lebih dari 10 kali berturut-turut Docker akan batal mencoba untuk me-restart container. Memberikan batas restart maksimum hanya berlaku untuk kebijakan on-failure.
unless-stopped
telah ditambahkan. Kerjanya sepertialways
tetapi Jika wadah dihentikan dan sistem reboot atau daemon buruh pelabuhan restart, wadah tidak akan restart. Lihat di sini untuk penulisan yang bagus dari semua 4 pilihan blog.codeship.com/...docker
daemon harus mulai otomatis untuk mendukung ini.Docker memiliki halaman ini yang menjelaskan bagaimana melakukannya dengan pemula dan systemd. Saya setuju bahwa sepertinya itu bukan hal yang tepat untuk Docker. Solusi mereka adalah menjalankan
docker start
, yang mengasumsikan bahwa Anda telah membuat wadah Anda. Saya akan berpikir bahwa Anda akan melakukannyadocker run --rm
di skrip pemula (memperlakukannya seperti proses baru dan wadah dari gambar) atau biarkan saja buruh pelabuhan me-restart wadah itu sendiri saat boot (karena akan secara default jika Anda tidak melakukan hal lain ). Pemula memiliki keuntungan memungkinkan memulai / menghentikan proses dengan mudah, tetapi Anda juga mendapatkannya dengan start / stop buruh pelabuhan!Saya pikir itu aneh untuk memaksa pengguna untuk secara manual membuat wadah (dengan semua port / volume binding yang benar) sebelum skrip pemula akan bekerja.
sumber
Kenapa tidak?
Saya menggunakan pengawas untuk ini dengan sukses besar.
Gunakan apa yang Anda ketahui, gunakan apa yang berhasil, gunakan sesuatu yang dapat Anda pelihara dan pahami dengan mudah.
sumber
--rm
?--rm
relevan di sini.docker
adalah penggantilxc
atauopenvz
yang memilikilxc.start.auto = 1
danvzctl set --onboot yes
. ESXi dan solusi virtualisasi lainnya juga menyertakan fitur tersebut. Seperti Lawrence, saya juga tidak berpikir fitur autostart seperti itu harus diimplementasikan dengan cara distribusi khusus karena pengguna buruh pelabuhan harus dapat memecahkan masalah yang sama dengan pengetahuan yang sama di setiap platform.