2014-12-04 27 views
5

Khi nhan đề đi, phương tiện an toàn ... đúng cách?Có "an toàn" để cam kết một thùng chứa đang hoạt động trong docker không?

An toàn = nhất quán, không mất dữ liệu, chuyên nghiệp, theo cách hợp pháp.

Hy vọng chia sẻ một số trải nghiệm với người dùng chuyên nghiệp docker.

Q. Commit là an toàn để chạy container Docker (ngoại trừ thay đổi nhanh chóng những thứ thời gian thực và các công cụ cơ sở dữ liệu, bình luận riêng của bạn được đánh giá cao.)

Có hoặc Không trả lời được chấp nhận với nhận xét. Cảm ơn.

+1

Có lẽ câu trả lời này tôi thực hiện cho một câu hỏi tương tự trước đây có thể giúp ...: http://stackoverflow.com/questions/24071148/is-it-safe-to-export-tarball-of- running-docker-container – mbarthelemy

Trả lời

4

Tất cả dung lượng bộ nhớ và ổ đĩa cứng được lưu bên trong phiên bản vùng chứa. Bạn nên, miễn là bạn không sử dụng bất kỳ bên ngoài gắn kết/docker khối lượng và máy chủ (bên ngoài kết nối DBs?) Không bao giờ gặp rắc rối cho dừng/khởi động lại và comitting dockers. Vui lòng đọc tiếp để đi sâu hơn về chủ đề này.

Câu hỏi mà bạn có thể muốn tự hỏi ban đầu, là cách docker lưu trữ những thay đổi mà nó thực hiện cho đĩa của nó khi chạy? Điều gì thực sự ngọt ngào để kiểm tra, là làm thế nào docker thực sự quản lý để có được điều này làm việc. Trạng thái ban đầu của ổ đĩa cứng của container là những gì được đưa ra từ hình ảnh. Nó có thể NOT ghi vào hình ảnh này. Thay vì viết cho hình ảnh, một khác biệt được tạo ra từ những gì được thay đổi trong trạng thái nội bộ của container so với những gì có trong hình ảnh docker. Docker sử dụng công nghệ được gọi là "Union Filesystem", tạo ra một lớp khác ở phía trên trạng thái ban đầu của hình ảnh docker.

"Khác" này (được tham chiếu là vùng chứa có thể ghi trong hình ảnh bên dưới) được lưu trữ trong bộ nhớ và biến mất khi bạn xóa vùng chứa của mình. Khi bạn sử dụng docker cam kết, vùng chứa có thể ghi được giữ lại trong "trạng thái" tạm thời của vùng chứa được lưu trữ bên trong một hình ảnh mới, tuy nhiên: Tôi không khuyên bạn nên sử dụng nó. Trạng thái của hình ảnh docker mới của bạn không được đại diện trong một dockerfile và không thể dễ dàng được tái sinh từ một xây dựng lại. Tạo một dockerfile mới sẽ không khó. Vì vậy, đó là luôn luôn là cách để đi cho cá nhân tôi.

Khi docker của bạn đang làm việc với khối lượng được gắn kết, máy chủ bên ngoài/DB, bạn có thể muốn đảm bảo bạn không bị đồng bộ và tạm thời ngừng dịch vụ bên trong vùng chứa docker. Khi bạn sử dụng dockerfile, bạn có thể khởi động một kịch bản shell bootstrap bên trong container để khởi động các kết nối, thực hiện kiểm tra và khởi tạo tiến trình đang chạy để ứng dụng của bạn có thể thiết lập được. Một lần nữa, việc chạy một thùng chứa đã cam kết làm cho việc này trở nên khó khăn hơn.

Union Filesystem

+0

Bạn có chắc chắn rằng Docker tiết kiệm bộ nhớ bên trong container? –

+0

Khi chạy, bộ nhớ được gán cho các quy trình trong vùng chứa, như với các vùng chứa đã dừng, bộ nhớ không còn được dành riêng cho các tiến trình đang chạy bên trong thùng chứa khi chúng dừng lại và tôi cho rằng nó phải được lưu vào đĩa để vùng chứa để có thể khởi động lại được. – RoyB

+0

Tôi đánh giá cao một số liên kết bằng chứng cho hành vi đó, bởi vì trong quá trình thiết lập của tôi 'nginx' không tồn tại trong vùng chứa đã lưu. –

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