2017-06-28 23 views

Trả lời

2

Nhìn vào các tài liệu docker stack:

mô tả Extended

Tạo và cập nhật một chồng từ một soạn hoặc một file thoa trên đám

Từ this blog article: docker stack hoạt động theo cách tương tự như docker compose. Đó là idempotent. Nếu ngăn xếp đã được triển khai, docker stack deploy sẽ khởi động lại chỉ những dịch vụ trong đó có các tiêu hóa hoặc thẻ được cập nhật:

docker stack process

Từ kinh nghiệm của tôi, khi tôi triển khai ngăn xếp cùng một lần nữa với một dịch vụ thay đổi, chỉ dịch vụ được cập nhật sẽ được khởi động lại.

NHƯNG ... có vẻ như có một số hạn chế đối với các thay đổi được tính đến (một số báo cáo bugs with image tags), vì vậy hãy thử xem liệu có hoạt động như mong đợi không.

Bạn cũng có thể sử dụng service update nếu bạn muốn đảm bảo rằng chỉ dịch vụ được nhắm mục tiêu nếu được cập nhật với các thay đổi của bạn.

You can also refer to this similar SO QA.

+0

Cảm ơn, điều này không hoạt động như mong đợi. Tôi thực sự đang tìm cách ép buộc khởi động lại một dịch vụ cụ thể (hoặc toàn bộ ngăn xếp) theo cách cuộn. Rất tiếc, một số dịch vụ mà tôi xử lý có vấn đề với việc vô hiệu hóa bộ nhớ cache và chúng tôi thấy rằng chúng tôi cần phải xóa/triển khai lại vào ngăn xếp để buộc cập nhật. Nhìn vào tài liệu 'update service' tôi có thể thêm/gỡ bỏ các biến' env' để giả mạo nó nếu không có cách nào được xây dựng. – tweeks200

+0

Chỉ tìm kiếm cùng một thứ - không thể tìm thấy bất kỳ tài liệu nào trong tài liệu. –

1

Làm docker stack deploy một lần nữa cho tôi là con đường để cập nhật dịch vụ. Là Francois' Answer và cũng theo kinh nghiệm của riêng tôi, làm như vậy chỉ cập nhật các dịch vụ cần được cập nhật.

Nhưng đôi khi, có vẻ dễ dàng hơn khi thử nghiệm nội dung để chỉ khởi động lại một dịch vụ duy nhất. Trong trường hợp của tôi, tôi phải xóa khối lượng và cập nhật dịch vụ để bắt đầu nó giống như nó mới mẻ. Tôi không chắc chắn nếu có nhược điểm với phương pháp tôi sẽ mô tả. Tôi đã thử nghiệm nó trên ngăn xếp phát triển của tôi và nó làm việc tuyệt vời cho tôi.

Lấy id dịch vụ mà bạn muốn xé xuống sau đó sử dụng docker service update --force <id> để buộc các cập nhật của dịch vụ đó một cách hiệu quả tái triển khai nó

$ docker stack services <stack_name> 
ID     NAME    ... 
3xrdy2c7pfm3  stack-name_api ... 

$ docker service update --force 3xrdy2c7pfm3 

Cờ --force sẽ buộc các dịch vụ để cập nhật làm cho nó khởi động lại.

Các vấn đề liên quan