Làm cách nào để tự khởi động bộ chứa docker khi khởi động lại hệ thống?


46

Vì tôi đã lưu trữ một trang web WordPress trong các container docker và tôi muốn các container này luôn được khởi động vào lúc khởi động, vì vậy cần phải thực hiện thủ công.


bạn sử dụng phiên bản Ubuntu nào?
Maythux

sử dụng máy chủ Ubuntu 14.04
nayan tiwari

Điều này đã được hỏi trên ServerFault .
Dan Dascalescu

Ngã tư. Vui lòng chọn một trang web, không nhiều, để đăng những thứ trên.
Thomas Ward

Câu trả lời:


34

Cho đến bây giờ tôi không nghĩ có một cách để làm điều đó bình thường. Một giải pháp khó khăn là sử dụng chính sách khởi động lại

sudo docker run --restart=always -d your_image

Điều này có nghĩa là bất cứ khi nào bạn tắt nó sẽ thoát khỏi container của bạn để khi bạn khởi động máy chủ của mình thì điều này dẫn đến việc khởi động lại docker.


Khi tôi tìm kiếm về nó, có một số công cụ tự động hóa như đầu bếp nhưng không biết cách sử dụng chúng
nayan tiwari

Nó vẫn đang thử nghiệm cho Ubuntu github.com/bflad/chef-docker/blob/master/README.md
Maythux

2
Tại sao không sử dụng khả năng hệ thống cho việc này? cả mới nổi và systemd đều có thể giải quyết vấn đề này một cách hoàn hảo
Reishin

29

Đây là trường hợp sử dụng rất phổ biến để thêm chính sách khởi động lại trên một container hiện có.

Điều này có thể được thực hiện với lệnh sau: docker update --restart {no,on-failure,unless-stopped,always} container_name

Thêm chi tiết: Docker - Khởi động container tự động


2
Điều này đã giải quyết vấn đề của tôi một cách hoàn hảo! Tôi đã có một thùng chứa với cơ sở dữ liệu của mình và muốn nó khởi động khi máy Mac của tôi khởi động. Bằng cách xác định rằng hình ảnh của nó luôn được khởi động lại (trừ khi dừng lại), điều này đã tạo ra mánh khóe!
Colin

21

Vì ubfox 15 hiện hỗ trợ systemd, mẫu cho trình quản lý này:

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

Có sẵn nhiều hơn trên trang web docker

Cấu hình PS khá dễ thương :)


4

Những gì tôi đã làm là sử dụng các tập tin Upstart.

Bạn có thể tìm thấy một số ví dụ và các giải pháp khác trong trang web Docker .

Tạo một tệp như vậy trong / 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

Lưu ý, kể từ Docker 1.2, có các chính sách khởi động lại cũng có thể giúp tự động khởi động lại các container khi dịch vụ docker được chạy (ví dụ sau khi khởi động).

Cá nhân, tôi sử dụng con rối để cung cấp máy trạm của mình và sử dụng mô-đun Docker này để tự động tạo các tập lệnh khởi động hoàn chỉnh hơn (bắt đầu, dừng, khởi động lại, tùy chọn sạch ...)


1
mới bắt đầu đã chết. sử dụng systemd.
AmirHossein
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.