Tại sao bộ chứa docker không bắt đầu khi khởi động tập lệnh khởi động trên Ubuntu 12.04?


15

Sử dụng hướng dẫn để Docker tự động khởi động trên Linode VPS chạy Ubuntu 12.04 và Docker 0.8.1, vùng chứa được chỉ định không bắt đầu khởi động lại.

Sau khi khởi động, tôi có thể

~$ sudo start [service-name]

và mọi thứ diễn ra theo đúng kế hoạch, nhưng tôi cũng muốn chứa để khởi động lại sau khi khởi động lại.

Là kịch bản trong hướng dẫn không được thiết kế để xử lý khởi động lại?

/ etc / default / docker tập tin chứa một dòng:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf trực tiếp từ trang docker:

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
Nội dung của kịch bản mới nổi của bạn là /etc/default/dockergì và ?
Bruno Pereira

Câu trả lời:


6

Tại một số thời điểm trong vài tháng qua, tập lệnh khởi động trong hướng dẫn đã được thay đổi để loại bỏ vòng lặp để chờ docker bắt đầu. Tôi đã loại bỏ vòng lặp khỏi các tập lệnh khởi động của mình và các thùng chứa của tôi bây giờ khởi động lại chính xác sau khi khởi động lại.

Tập lệnh /etc/init/service-name.conf của tôi bây giờ trông như thế này:

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

Tôi không chắc điều gì đã xảy ra với vòng lặp đó. Có thể nó đang trỏ đến tệp sai trên hệ thống của tôi, mặc dù tôi không thực hiện bất kỳ thay đổi nào đối với cài đặt docker mặc định. Hiện tại, tôi rất vui khi sửa lỗi liên quan đến việc xóa mã thay vì một số công việc phức tạp.


Sẽ tốt hơn khi bắt đầu thay đổi công việc docker để phát ra tín hiệu (bắt đầu docker) và để tín hiệu đó kích hoạt các công việc container bắt đầu.
MikeyB

Bạn không thể dừng container theo cách này bằng cách phát lệnh stop service-name. Tôi đang đối mặt với vấn đề này :(
Ahmed Al Hafoudh

3

Đối với bất cứ ai sử dụng ubfox 14.04 apt-get hương vị của docker. Bạn chỉ cần thay đổi tập lệnh khởi động để chờ "docker.io" chứ không phải "docker" như vậy:

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

Tôi đang sử dụng Ubuntu 13.10 làm máy chủ lưu trữ và tôi gặp vấn đề tương tự. Tôi thấy rằng docker cài đặt một tập lệnh RC cho docker /etc/init.d/dockervà đồng thời cài đặt một tập lệnh khởi động tại /etc/init/docker.conf. Tôi chỉ phải loại bỏ tập lệnh RC /etc/init.d/dockercho vấn đề này để biến mất.

Hy vọng điều này làm việc cho bạn là tốt.


Đáng buồn thay, điều này đã không làm việc cho tôi.
jody

0
DOCKER_OPTS="-r=false"

Điều này có nghĩa là: Không khởi động lại các container đang chạy trước đó.

Xóa -rtùy chọn hoặc thay đổi thành đúng.


2
Phải, nhưng vấn đề là phải khởi động lại container khởi động, không phải là trình nền của docker. Nếu daemon docker khởi động container khi khởi động lại, quá trình không thể được quản lý bằng cách khởi động.
jody

0

/var/run/docker.socklà một ổ cắm, do đó bạn cần sử dụng -Skhi kiểm tra sự tồn tại:

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.