Cập nhật ứng dụng bên trong các container Docker?


9

Thông thường trên máy chủ, cập nhật tự động các bản vá liên quan đến bảo mật được định cấu hình. Do đó, nếu tôi đang chạy MySQL 5.5 và một bản vá bảo mật mới xuất hiện, Ubuntu Server sẽ áp dụng nâng cấp và khởi động lại MySQL để giữ cho tôi được bảo vệ theo cách tự động. Rõ ràng, điều này có thể bị vô hiệu hóa, nhưng nó hữu ích cho những người trong chúng ta hơi lười biếng;)

Liệu một khái niệm như vậy có tồn tại bên trong một Docker container? Nếu tôi đang chạy MySQL trong một Docker container, tôi có cần liên tục dừng container, mở một shell trong nó, sau đó cập nhật và nâng cấp MySQL không?


Đây là Docker, và không phải câu hỏi LXC. Vì bản thân các bộ chứa LXC chỉ là một bản phân phối linux khác chạy trong cùng một kernel, bạn sẽ chỉ sử dụng các lệnh tương tự để cập nhật hệ thống bộ chứa LXC.
phoops

Câu trả lời:


13

Tôi không đồng ý với câu trả lời được chấp nhận. Trước tiên, bạn nên thiết kế các thùng chứa của mình với sự phân tách trạng thái (trong trường hợp MySQL, điều này có nghĩa là ít nhất là /var/lib/mysqlđi theo khối lượng riêng của nó ). Thứ hai, bạn nên xác định chiến lược nâng cấp; tiên tiến sẽ tạo ra các hình ảnh được phiên bản cho từng bộ gói apt nâng cấp và kiểm tra chúng trước khi hoán đổi khối lượng dữ liệu từ bộ chứa sang bộ mới. Điều này có thể bao gồm thời gian chết hoặc không có thời gian chết nếu bạn sử dụng một cái gì đó như đau hông .

Thiết lập này, mặc dù đắt hơn so với thiết lập ban đầu, nhưng được sử dụng tương tự bởi các công ty có quy mô lớn về container và sẽ rẻ hơn để duy trì theo thời gian.

Hơn nữa, nâng cấp gói cuối cùng có thể phá vỡ các container đang chạy của bạn, do đó áp dụng chúng cho các container đang chạy không phải là cách tốt nhất - vì nó không phải là chạy phần mềm lỗi thời.


+1 đây là cách thực hành tốt nhất. lưu trữ dữ liệu trên một container máy chủ chỉ là vấn đề.
booyaa

4

TL; DR : Nếu bạn không tự xây dựng nó, điều đó sẽ không xảy ra.

Cách hiệu quả để làm điều này là chỉ cần viết một tập lệnh bắt đầu tùy chỉnh cho vùng chứa của bạn được chỉ định CMDtrong Dockerfile. Trong tệp này, chạy một apt-get update && apt-get upgrade -qqytrước khi bắt đầu bất cứ điều gì bạn đang chạy.

Sau đó, bạn có một vài cách để đảm bảo cập nhật đến container:

  1. Xác định một công việc định kỳ trong hệ điều hành máy chủ của bạn để khởi động lại container theo lịch trình, do đó, nó sẽ cập nhật và nâng cấp theo lịch trình.
  2. Theo dõi các cập nhật bảo mật cho các phần mềm, sau đó cập nhật gói bị ảnh hưởng, khởi động lại container.

Đó không phải là điều dễ dàng nhất để tối ưu hóa và tự động hóa, nhưng nó có thể.


1
Tiếp tục đọc xuống trang. deim0s có một câu trả lời tốt hơn.
mc0e
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.