Bagaimana cara melakukan autostart container docker pada sistem reboot?

47

Ketika saya meng-host situs WordPress dalam wadah buruh pelabuhan dan saya ingin agar wadah ini selalu dimulai saat boot, jadi perlu melakukannya secara manual.

nayan tiwari
sumber
versi ubuntu apa yang Anda gunakan?
Maythux
menggunakan server ubuntu 14.04
nayan tiwari
Ini telah ditanyakan pada ServerFault .
Dan Dascalescu
Crossposted. Silakan pilih satu situs, tidak banyak, untuk memposting sesuatu.
Thomas Ward

Jawaban:

35

Sampai sekarang saya tidak berpikir ada cara untuk melakukan itu secara normal. Solusi rumit adalah dengan menggunakan kebijakan mulai ulang

sudo docker run --restart=always -d your_image

Ini berarti setiap kali Anda mematikan ini akan keluar dari wadah Anda sehingga saat Anda memulai host Anda maka ini mengarah untuk me-restart buruh pelabuhan.

Maythux
sumber
ketika saya mencari tentang itu ada beberapa alat otomatisasi seperti koki tetapi tidak tahu bagaimana menggunakannya
nayan tiwari
Itu masih eksperimental untuk Ubuntu github.com/bflad/chef-docker/blob/master/README.md
Maythux
2
Mengapa tidak menggunakan kemungkinan sistem untuk ini? baik pemula dan systemd dapat menangani ini dengan sempurna
Reishin
29

Ini adalah kasus penggunaan yang sangat umum untuk menambahkan kebijakan mulai ulang pada wadah yang ada.

Ini bisa dilakukan dengan perintah berikut: docker update --restart {no,on-failure,unless-stopped,always} container_name

Lebih detail: Docker - Mulai wadah secara otomatis

SlimIT
sumber
2
Ini menyelesaikan masalah saya dengan sempurna! Saya punya wadah dengan database saya, dan ingin itu dimulai ketika Mac saya mulai. Dengan menentukan bahwa gambarnya selalu dimulai ulang (kecuali dihentikan), ini berhasil!
Colin
21

Karena ubuntu 15 sekarang mendukung systemd, sampel untuk manajer ini:

someservicename.service

[Unit]
Description=Some service
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 2 container_name

[Install]
WantedBy=multi-user.target

Lebih banyak tersedia di situs buruh pelabuhan

PS Konfigurasi yang sangat lucu :)

Reishin
sumber
4

Apa yang saya lakukan adalah menggunakan file pemula.

Anda dapat menemukan beberapa contoh dan solusi lain di situs web Docker .

Buat file seperti itu di / etc / init:

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

Catatan, seperti dari Docker 1.2, ada kebijakan mulai ulang yang juga dapat membantu untuk memulai kembali wadah secara otomatis ketika layanan buruh pelabuhan dijalankan (setelah boot misalnya).

Personnaly, saya menggunakan boneka untuk menyediakan workstation saya dan menggunakan modul Docker ini untuk secara otomatis membuat skrip startup yang lebih lengkap (mulai, berhenti, restart, opsi bersih ...)

aklmie
sumber
1
kaya baru sudah mati. gunakan systemd.
AmirHossein