Mengapa container docker tidak dimulai saat boot dengan skrip pemula di Ubuntu 12.04?


15

Menggunakan instruksi untuk memulai otomatis Docker pada Linode VPS yang menjalankan Ubuntu 12.04 dan Docker 0.8.1, wadah yang ditentukan tidak dimulai saat reboot.

Setelah di-boot, saya bisa

~$ sudo start [service-name]

dan semuanya berjalan seperti yang direncanakan, tetapi saya juga ingin wadah untuk memulai kembali setelah reboot.

Apakah skrip dalam tutorial tidak dirancang untuk menangani reboot?

/ etc / default / docker file berisi satu baris:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf langsung dari halaman buruh pelabuhan:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    # Wait for docker to finish starting up first.
    FILE=/var/run/docker.sock
    while [ ! -e $FILE ] ; do
        inotifywait -t 2 -e create $(dirname $FILE)
    done
    /usr/bin/docker start -a db5e61a9afa8
end script

2
Apa isi skrip pemula Anda dan /etc/default/docker?
Bruno Pereira

Jawaban:


6

Pada beberapa titik selama beberapa bulan terakhir, skrip pemula dalam tutorial telah diubah untuk menghapus loop untuk menunggu buruh pelabuhan memulai. Saya menghapus loop dari skrip pemula saya dan wadah saya sekarang restart dengan benar setelah reboot.

Script /etc/init/service-name.conf saya sekarang terlihat seperti ini:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    /usr/bin/docker start -a db5e61a9afa8
end script

Saya tidak yakin apa yang salah dengan loop itu. Mungkin itu menunjuk ke file yang salah pada sistem saya, meskipun saya tidak membuat perubahan pada instalasi buruh pelabuhan default. Untuk saat ini, saya senang perbaikan yang melibatkan penghapusan kode alih-alih beberapa penyelesaian yang rumit.


Akan lebih baik-baru saja untuk mengubah pekerjaan buruh pelabuhan untuk memancarkan sinyal (buruh pelabuhan-mulai) dan memiliki sinyal yang memicu pekerjaan kontainer untuk memulai.
MikeyB

Anda tidak dapat menghentikan wadah dengan cara ini dengan mengeluarkan perintah stop service-name. Saya menghadapi masalah ini :(
Ahmed Al Hafoudh

3

Bagi siapa saja yang menggunakan ubuntu 14.04 apt-get flavor docker. Anda hanya perlu mengubah skrip startup untuk menunggu di "docker.io" dan bukan "docker" seperti:

description "Docker startup script for yum_repo"
author "me"
start on filesystem and started docker.io
stop on runlevel [!2345]
respawn
script
  /usr/local/bin/docker start -a yum_repo_run
end script

1

Saya menggunakan Ubuntu 13.10 sebagai tuan rumah dan saya memiliki masalah yang sama. Saya menemukan bahwa buruh pelabuhan menginstal skrip rc untuk buruh pelabuhan di /etc/init.d/dockerdan pada saat yang sama menginstal skrip pemula di /etc/init/docker.conf. Saya hanya harus menghapus skrip rc /etc/init.d/dockeragar masalah ini hilang.

Semoga ini bekerja untuk Anda juga.


Sayangnya, yang ini tidak berhasil untuk saya.
jody

0
DOCKER_OPTS="-r=false"

Ini berarti: Jangan mulai ulang wadah yang sebelumnya berjalan.

Hapus -ropsi atau ubah ke true.


2
Benar, tetapi intinya adalah untuk memulai kembali menangani kontainer pemula, bukan daemon buruh pelabuhan. Jika daemon buruh pelabuhan memulai wadah saat reboot, proses tidak dapat dikelola oleh pemula.
jody

0

/var/run/docker.sockadalah soket sehingga Anda perlu menggunakannya -Ssaat menguji keberadaan:

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.