Misalkan saya memiliki kontainer Docker yang ingin saya jalankan, maka saya dapat memanggil
$ docker run ...
dan semuanya baik-baik saja. Apakah ada cara bawaan untuk menjalankan penampung dengan cara yang akan dimulai ulang secara otomatis, jika sistem mogok dan melakukan boot ulang?
Jika ya, apakah ini juga tersedia di Docker Compose?
docker
docker-compose
Golo Roden
sumber
sumber
Systemd
sebagai manajer layanan adalah salah satu solusi terbaik untuk tujuan itu dan membutuhkan lebih banyak suara positif.docker run --restart=always crmpicco-mysql
dan aku kesalahan:Unable to find image 'crmpicco-mysql:latest' locally
.docker run
perintah mengharapkan nama dari suatu gambar yang dapat Anda daftar melaluidocker images
.Jika Anda ingin penampung dimulai meskipun tidak ada pengguna yang melakukan login (seperti VM VirtualBox yang saya hanya mulai dan tidak ingin login setiap kali). Berikut adalah langkah-langkah yang saya lakukan untuk Ubuntu 16.04 LTS. Sebagai contoh, saya memasang wadah oracle db:
dan tambahkan konten berikut:
dan aktifkan layanan saat memulai
Untuk informasi lebih lanjut https://docs.docker.com/engine/admin/host_integration/
sumber
docker
perintah di atas dengandocker-compose
perintah, menggunakan-f
flag untuk menentukan lokasi file docker-compose:/usr/bin/docker-compose -f /path/to/docker-compose.yml up
docker-compose.yml
menentukan sebuah.env
file, gunakan--project-directory /path/to
sebagai tambahan untuk secara eksplisit menentukan file penulisan buruh pelabuhan Anda.[Unit]
petunjuk berguna yang disebutBefore=
. Terutama ketika memulai hal-hal seperti sistem manajemen database, akan sangat membantu untuk memastikannya dimulai sebelum layanan tertentu lainnya.The kebijakan Restart standar adalah
no
.Untuk wadah yang dibuat, gunakan
docker update
untuk memperbarui kebijakan restart.0576df221c0b
adalah id penampung.sumber
always
berarti penampung akan memulai ulang meskipun saya menghentikannya? Tentunya ada cara untuk me-restart wadah di reboot tanpa semacam ini terus-menerus awal ...If you manually stop a container, its restart policy is ignored until the Docker daemon restarts or the container is manually restarted. This is another attempt to prevent a restart loop.
Anda bisa menggunakan
docker update --restart=on-failure <container ID or name>
.Di atas apa yang disarankan oleh namanya,
on-failure
tidak hanya akan me-restart container jika gagal, tetapi juga saat boot sistem.Berdasarkan dokumentasi , ada beberapa opsi restart:
sumber
1) Pertama-tama, Anda harus mengaktifkan layanan buruh pelabuhan saat boot
2) Kemudian jika Anda memiliki file docker-compose .yml add
restart: always
atau jika Anda memiliki docker container tambahkan restart = selalu seperti ini:docker run --restart=always
dan menjalankan kontainer buruh pelabuhanYakinkan
lihat kebijakan restart ini di halaman resmi Docker
3) Jika Anda ingin memulai docker-compose, semua layanan berjalan saat Anda me-reboot sistem Anda Jadi Anda menjalankan perintah di bawah ini hanya sekali
sumber
Lebih banyak mode "lembut" dari dokumentasi:
sumber
restart=unless-stopped
pilihan akan mencoba untuk memulai kontainer ketika mesin buruh pelabuhan-restart. Pengecualian yang saya lihat adalah ketika mesin buruh pelabuhan itu sendiri tidak dikonfigurasi untuk memulai secara otomatis saat reboot (periksasystemctl status docker
untuk memastikan sudah diaktifkan) dan mesin mulai kontainer sebelum jaringan siap yang saya hanya melihat dengan jaringan overlay. Keduanya akan rusakrestart=always
juga.Saya ingin mencapai startup kontainer saat boot di Windows.
Oleh karena itu, saya baru saja membuat Tugas terjadwal yang diluncurkan saat boot sistem. Tugas itu hanya memulai "Docker untuk Windows.exe" (atau apa pun nama docker Anda yang dapat dieksekusi).
Kemudian, semua penampung dengan kebijakan mulai ulang "selalu" akan mulai.
sumber
Inilah kegunaan crontab:
Akses crontab pengguna Anda dengan
crontab -e
atau tampilkan dengancrontab -l
atau edit crontab sistem Anda di/etc/crontab
sumber
Anda dapat menjalankan penampung yang selalu dimulai ulang dengan:
Jika Anda ingin mengubah konfigurasi penampung yang sedang berjalan, Anda harus memperbaruinya dengan:
Dan jika Anda ingin melihat kebijakan container saat ini, jalankan perintah berikut sebelum di atas di tempat pertama:
Lagi pula, Jangan lupa untuk mengaktifkan daemon docker yang terinstal saat sistem boot dengan:
Untuk melihat daftar lengkap kebijakan mulai ulang, lihat: Kebijakan Mulai Ulang
sumber
Saya memiliki masalah serupa saat menjalankan sistem Linux. Setelah sistem di-boot, wadah dengan kebijakan restart "kecuali-dihentikan" tidak akan restart secara otomatis kecuali saya mengetik perintah yang menggunakan buruh pelabuhan dalam beberapa cara seperti "buruh pelabuhan ps". Saya terkejut karena saya mengharapkan perintah itu hanya melaporkan beberapa informasi status. Selanjutnya saya mencoba perintah "systemctl status docker". Pada sistem yang tidak menjalankan perintah buruh pelabuhan, perintah ini melaporkan hal berikut:
Pada sistem di mana "docker ps" telah dijalankan tanpa perintah Docker lain, saya mendapatkan yang berikut:
Penjelasan yang paling mungkin adalah bahwa Docker menunggu beberapa perintah buruh pelabuhan sebelum sepenuhnya menginisialisasi dan memulai kontainer. Anda mungkin dapat menjalankan "docker ps" dalam file unit systemd pada satu titik setelah semua layanan yang dibutuhkan container Anda telah diinisialisasi. Saya telah menguji ini dengan meletakkan file bernama docker-onboot.service di direktori / lib / systemd / system dengan konten berikut:
WantedBy = multi-user.target
Sejauh ini (satu tes, dengan layanan ini diaktifkan), kontainer dimulai saat komputer di-boot. Saya tidak mencoba ketergantungan pada docker.service karena docker.service tidak akan mulai sampai perintah docker dijalankan. Tes selanjutnya adalah dengan docker-onboot dinonaktifkan (untuk melihat apakah ketergantungan WantedBy akan secara otomatis memulainya).
sumber
Untuk memulai wadah dan mengaturnya untuk memulai ulang secara otomatis pada penggunaan boot ulang sistem
Di mana
ecstatic_ritchie
adalah nama contoh yang menentukan wadah yang diminati. Gunakandocker ps -a
untuk mencantumkan semua nama wadah.Untuk membuat container berjalan tertentu mulai secara otomatis saat boot ulang sistem
Untuk membuat semua kontainer yang berjalan dimulai secara otomatis saat boot ulang sistem
Lihat lebih lanjut di beranda Docker
sumber