docker - làm thế nào để bạn vô hiệu hóa tự động khởi động lại trên một container?


156

Tôi có thể kích hoạt tự động khởi động lại --restart=always, nhưng sau khi tôi dừng container, làm cách nào để tắt thuộc tính đó?

Tôi thường chạy một máy chủ web và thường ánh xạ cổng 80:

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

Nhưng có những lúc tôi muốn chạy một phiên bản mới hơn của hình ảnh của mình, nhưng tôi muốn giữ thùng chứa cũ xung quanh. Vấn đề là nếu có nhiều container với --restart=always, chỉ một trong số chúng (ngẫu nhiên?) Bắt đầu vì tất cả chúng đều tranh giành cổng 80 trên máy chủ.

Câu trả lời:


326

Bạn có thể sử dụng --restart=unless-stoppedtùy chọn, như @Shibashis đã đề cập hoặc cập nhật chính sách khởi động lại (điều này yêu cầu docker 1.11 hoặc mới hơn);

Xem tài liệu chodocker updatechính sách khởi động lại Docker .

docker update --restart=no my-container

cập nhật chính sách khởi động lại cho một container hiện có ( my-container)


69
Sử dụng docker update --restart=no $(docker ps -a -q)để cập nhật tất cả các thùng chứa của bạn :-)
Đánh dấu Mooibroek

33

Bạn có thể bắt đầu container của bạn với --restart=unless-stopped.


22

Sử dụng bên dưới để vô hiệu hóa TẤT CẢ các thùng chứa tự động khởi động lại (daemon).

docker update --restart=no $(docker ps -a -q)

Sử dụng cách sau để vô hiệu hóa khởi động lại một thùng chứa SINGLE.

docker update --restart=no the-container-you-want-to-disable-restart

Hợp lý :

Docker cung cấp các chính sách khởi động lại để kiểm soát xem container của bạn có tự động khởi động khi chúng thoát hay khi Docker khởi động lại. Điều này thường rất hữu ích khi Docker đang chạy một dịch vụ chính.

Ghi chú

Nếu bạn đang sử dụng docker-compose, điều này có thể hữu ích để biết.

restart no là chính sách khởi động lại mặc định và nó không khởi động lại một container trong bất kỳ trường hợp nào. Khi luôn được chỉ định, container luôn khởi động lại. Chính sách lỗi khi khởi động lại một container nếu mã thoát cho biết lỗi không thành công.

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

12

Nếu bạn có một bầy khởi động lại các container, bầy sẽ khởi động lại bất kỳ container nào bạn dừng hoặc rm, bất kể tùy chọn khởi động lại. Đó là một tính năng, không phải là một lỗi.

Đảm bảo bạn không chạy dịch vụ mà bạn đã quên:

docker service ls

Sau đó, bạn có thể dừng dịch vụ

docker service rm <service id discovered with previous command>

1
lsdẫn đến lỗiError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
naXa
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.