2015-09-07 21 views
5

Tôi rất mới với Docker và hiện đang cố gắng để có được đầu của tôi xung quanh nếu có bất kỳ hướng dẫn thực hành tốt nhất để cập nhật phần mềm chạy bên trong một container docker trong một môi trường phân phối rất lớn. Tôi đã tìm thấy một vài bài viết về việc cập nhật cơ sở dữ liệu MySQL trong docker, v.v. Nó đưa ra gợi ý tốt cho bất kỳ phần mềm nào lưu trữ dữ liệu, nhưng nếu bạn muốn cập nhật các phần khác hoặc gói phần mềm hoặc dịch vụ của riêng bạn được phân phối và sử dụng một số hình ảnh docker khác thông qua docker-compose?Làm thế nào để cập nhật phần mềm bên trong một container docker?

Có ai đó có kinh nghiệm thực tế làm điều đó trong môi trường như vậy, những người có thể giúp tôi hoặc những người mới khác hiểu các phương pháp hay nhất trong docker nếu có.

Cảm ơn sự giúp đỡ của bạn!

Trả lời

1

Bạn không bao giờ cập nhật phần mềm trong vùng chứa đang chạy. Bạn kéo xuống phiên bản mới từ hub. Nếu chúng tôi cho rằng bạn đang sử dụng thẻ mới nhất (ý tưởng tồi, luôn ghim các phiên bản) của hình ảnh và đó là một trong những hình ảnh thư viện chính thức hoặc công khai có sử dụng các bản dựng tự động, bạn sẽ nhận được phiên bản mới nhất của hình ảnh vùng chứa khi bạn kéo hình ảnh.

Giả sử bạn cũng đã tách dữ liệu ra khỏi vùng chứa của mình dưới dạng khối lưu trữ hoặc sử dụng mẫu vùng chứa dữ liệu.

Vùng chứa phải được coi là không thay đổi, nếu bạn thay đổi trạng thái đó, nó không còn là phiên bản thực của hình ảnh nữa.

+0

Điều gì sẽ xảy ra nếu bạn có nhiều thùng chứa nhỏ được cấu tạo bởi trình biên dịch docker để xây dựng phần mềm của bạn? Những thay đổi này là w/hoặc w/o thời gian chết? Trong trường hợp tốt nhất tôi muốn không có thời gian chết –

+0

Nếu một phần của Dockerfile liên quan đến các cuộc gọi xây dựng trong 'docker-compose.yml' của bạn liên quan đến việc tải xuống và biên dịch mã nguồn hoặc nâng cấp thông qua trình quản lý gói, bạn sẽ kích hoạt một hình ảnh mới . Re: không có thời gian chết - bạn có thể đăng các 'docker-compose.yml' của bạn, nó có thể giúp tôi trong việc cải thiện câu trả lời của tôi. – booyaa

+0

Cho đến nay nó là một câu hỏi lý thuyết hơn là một cái gì đó tôi đang làm trong thực tế được nêu ra. Chỉ cần suy nghĩ về một ví dụ môi trường phân tán lớn hơn chứ không phải ví dụ về hình ảnh docker đơn. Nâng cấp thông qua trình quản lý gói, nghĩa là bạn về cơ bản kết nối với hình ảnh qua ssh và thực thi, ví dụ, 'npm'? Bạn có làm tất cả những điều đó trong thùng chứa đang chạy hay bạn sẽ sử dụng phiên bản hình ảnh/vùng chứa khác và chỉ "kỳ diệu" sẽ chuyển đổi phiên bản đang chạy với phiên bản mới? –

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