2014-12-31 24 views
7

Chỉ mới bắt đầu chơi với Docker. Để triển khai một cuộc chiến tranh trên tomcat hình như vẫn có hai phương pháp:Docker: Cách tiếp cận nào tốt hơn? WAR được nhúng vào hình ảnh hoặc hình ảnh cơ bản + chiến tranh?

  1. Tạo hình ảnh với java + tomcat + chiến tranh nhúng trong hình ảnh
  2. Có một hình ảnh cơ bản với java + tomcat và sau đó "bơm" chiến tranh vào hình ảnh cơ sở (thông qua khối lượng máy chủ gắn kết, ví dụ)

Tiếp cận 1:

  • Cần để tạo ra một hình ảnh cho mỗi xây dựng
  • hoàn toàn gói giải pháp
  • Do kích thước hình ảnh lớn, duy trì một hình ảnh cho từng xây dựng và chia sẻ hình ảnh cho việc triển khai hạ lưu có thể trở thành một vấn đề

Phương pháp 2:

  • Giữ một hình ảnh cơ bản trong docker hub
  • Thêm chiến tranh bên ngoài và chạy
  • Kích thước phân phối nhỏ hơn (chỉ chiến tranh), nhưng bước bổ sung mà nhóm triển khai cần phải biết tên hình ảnh để chạy

Cách tiếp cận nào trong số này thường được sử dụng trong sản xuất?

+2

Không có thông tin gì về nó - cả hai đều được sử dụng cũng như tùy chọn thứ ba: vì Docker vẫn còn tương đối trẻ. Cách tiếp cận 1 cũng khá tình huống của nó - không thực sự hoạt động khi bạn muốn triển khai nhiều phần ứng dụng của các dự án khác nhau cho cùng một cá thể Tomcat chẳng hạn. Câu hỏi của bạn về cơ bản là "khi bạn nhúng máy chủ trong khung ứng dụng của mình và khi nào bạn giữ chúng bị cô lập". – Gimby

+0

Như @Gimby nói đó không phải là cách tiêu chuẩn để làm điều đó.Cá nhân tôi sẽ chọn phương pháp thứ hai, hoặc có thể chỉ có hình ảnh cơ sở, và từ đó chia sẻ cuộc chiến với khối lượng Docker hoặc tiêm chiến tranh thông qua một kịch bản shell chạy mỗi khi container được tạo ra (có khả năng truyền một số tham số đến quản lý một số cuộc chiến tranh). Dù sao việc thực hiện lựa chọn nên phụ thuộc vào mục đích: Nếu bạn muốn hình ảnh docker của bạn để phát triển, chọn một cái gì đó giống như cách tiếp cận thứ hai. Mặt khác, bạn muốn hình ảnh để phân phối, có thể là hình ảnh đầu tiên sẽ phù hợp hơn. –

Trả lời

3

Nếu bạn muốn triển khai mã của mình lên dịch vụ dàn xếp docker như Google Container Engine, Amazon Container Service vv thì tùy chọn 1 thường là giải pháp khả thi duy nhất vì bạn không có quyền truy cập vào máy chủ. Tùy chọn 1 cũng có khả năng mở rộng hơn trên các hệ thống dàn xếp docker vì bạn có thể tạo nhiều phiên bản dịch vụ của mình trên các máy chủ docker khác nhau.

Tuy nhiên, bản thân tôi sử dụng tùy chọn 2 vì lý do bạn đã đề cập và vì tôi quản lý mở rộng thông qua các nhóm tự động mở rộng bằng cách sử dụng hình đám mây có thể cung cấp các trường hợp với chiến tranh của tôi trong cửa hàng địa phương. Ngay bây giờ tôi không nghĩ rằng dàn nhạc docker đủ trưởng thành để thay thế hệ thống dàn nhạc bên ngoài và nếu tôi có những hệ thống đó thì không có điểm nào mất lợi ích của phương pháp tiếp cận 2. Tuy nhiên, khi amazon cho phép chúng tôi kết nối trực tiếp với ELB docker container và thực hiện một vài cải tiến hơn tôi sẽ xem xét nghiêm túc.

Do kích thước hình ảnh lớn, duy trì một hình ảnh cho từng xây dựng và chia sẻ hình ảnh cho việc triển khai hạ lưu có thể trở thành một vấn đề

FYI Docker sử dụng một hệ thống tập tin khác dựa như vậy miễn là bạn chỉ thay đổi tập tin chiến tranh lưu trữ hình ảnh của bạn không phải là một vấn đề.

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