Sử dụng --restart=always
chính sách sẽ xử lý khởi động lại các container hiện có trong trường hợp khởi động lại.
Vấn đề là nếu có nhiều hộp với --restart=always
khi bạn chạy hình ảnh của một phiên bản mới hơn như đã thảo luận trong Docker - làm thế nào để bạn vô hiệu hóa tính năng tự động khởi động lại vào một container? .
Cố gắng tự động loại bỏ vùng chứa khi nó tồn tại bằng cách đặt tùy chọn docker run --rm
cũng sẽ gặp vấn đề với --restart=always
chính sách vì chúng xung đột lẫn nhau .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
Vì vậy, trong trường hợp này, tốt hơn là chọn một tùy chọn khác: - khởi động trừ khi chính sách dừng .
$ docker run --rm --restart unless-stopped <image>
Chính sách này sẽ không mâu thuẫn với docker run --rm
nhưng như đã giải thích trong tài liệu hướng dẫn Docker :
Nó tương tự --restart=always
, ngoại trừ khi container bị dừng (bằng tay hoặc bằng cách khác) , nó không được khởi động lại ngay cả sau khi Docker daemon khởi động lại.
Vì vậy, khi sử dụng --restart unless-stopped
chính sách này , để đảm bảo quá trình khởi động lại hoạt động trong trường hợp nó dừng do tai nạn khi bạn đóng thiết bị đầu cuối, hãy thực hiện một lần trong thiết bị đầu cuối khác như sau:
$ docker ps
$ docker restart <container>
Đợi cho đến khi quá trình tiêu diệt kết thúc ở lớp vỏ trước, sau đó đóng nó và chỉ để lại ( không thoát ra ).
Và kiểm tra lại trong thiết bị đầu cuối còn lại nếu container vẫn đang chạy:
$ docker ps
Nếu nó vẫn đang chạy, bạn có thể khởi động lại một cách an toàn và kiểm tra lại rằng ứng dụng đang khởi động lại và thấy docker của bạn sạch mà không sử dụng nhiều container.