6 cách thực hành tốt nhất để sử dụng Container

Hãy để nói về một số thực hành tốt nhất bạn nên tuân theo trong khi sử dụng các thùng chứa.


Containerization đang được sử dụng rộng rãi trên một số tổ chức để triển khai các ứng dụng bên trong một container. Những container này là phổ biến vì chúng rất nhẹ. Tận dụng tối đa hộp đựng, bạn nên tuân theo một số thực tiễn tốt nhất trong khi bạn đang làm việc với họ.

Sử dụng hình ảnh cơ sở ổn định

Nhờ Docker, việc tạo hình ảnh container chưa bao giờ đơn giản.

Chỉ định hình ảnh cơ sở của bạn, thêm các thay đổi của bạn và xây dựng thùng chứa của bạn. Mặc dù điều này là tuyệt vời để bắt đầu, sử dụng hình ảnh cơ sở mặc định có thể dẫn đến hình ảnh lớn chứa đầy lỗ hổng bảo mật. Ngoài ra, tránh sử dụng hình ảnh docker thẻ mới nhất của Wikipedia vì có khả năng rất lớn có lỗi xảy ra trong đó.

Debian hoặc Ubuntu được sử dụng làm hình ảnh cơ sở bởi hầu hết các hình ảnh Docker. Chúng rất hữu ích về khả năng tương thích và dễ dàng lên máy bay, nhưng những hình ảnh cơ sở này có thể thêm hàng trăm megabyte chi phí bổ sung vào thùng chứa của bạn.

Ví dụ: các ứng dụng Node.js và Go đơn giản, ứng dụng hello hello World có giá khoảng 700 megabyte. Ứng dụng của bạn có lẽ chỉ có kích thước vài megabyte. Vì vậy, tất cả chi phí bổ sung này là lãng phí không gian và là nơi ẩn náu tuyệt vời cho các lỗ hổng bảo mật và lỗi.

Nếu ngôn ngữ lập trình hoặc ngăn xếp của bạn không có tùy chọn cho một hình ảnh cơ sở nhỏ, bạn có thể xây dựng vùng chứa của mình bằng cách sử dụng raw Núi cao Linux như một điểm khởi đầu. Điều này cũng cho phép bạn kiểm soát hoàn toàn những gì bên trong thùng chứa của bạn.

Giữ hình ảnh container nhỏ hơn

Sử dụng hình ảnh cơ sở nhỏ hơn có lẽ là cách dễ nhất để giảm kích thước thùng chứa của bạn.

Rất có thể là ngôn ngữ hoặc ngăn xếp của bạn mà bạn đang sử dụng cung cấp một hình ảnh chính thức nhỏ hơn nhiều so với hình ảnh mặc định. Ví dụ: hãy để một cái nhìn về bộ chứa Node.js. Đi từ nút mặc định: mới nhất đến nút: 14-alpine làm giảm kích thước hình ảnh cơ sở của chúng tôi gần mười lần.

thẻ mới nhất của nodejs - geekflare

so với.

thẻ alpine nodejs - geekflare

Trong tệp Docker mới, vùng chứa bắt đầu bằng nút: hình ảnh alpine, tạo một thư mục cho mã, cài đặt các phụ thuộc với NPM và cuối cùng, khởi động máy chủ Node.js. Với bản cập nhật này, thùng chứa kết quả nhỏ hơn gần mười lần.

Bạn tạo container thậm chí nhẹ hơn bằng cách sử dụng mẫu xây dựng. Với các ngôn ngữ thông dịch, mã nguồn được gửi đến một trình thông dịch, và sau đó nó được thực thi trực tiếp. Nhưng với ngôn ngữ được biên dịch, mã nguồn được chuyển thành mã được biên dịch trước.

Bây giờ, với các ngôn ngữ biên dịch, bước biên dịch thường yêu cầu các công cụ không cần thiết để chạy mã. Vì vậy, điều này có nghĩa là bạn có thể loại bỏ hoàn toàn các công cụ này khỏi thùng chứa cuối cùng. Để làm điều này, bạn có thể sử dụng mẫu xây dựng. Container đầu tiên xây dựng mã, và sau đó mã được biên dịch được đóng gói trong vùng chứa cuối cùng mà không cần tất cả các trình biên dịch và công cụ cần thiết để tạo mã được biên dịch.

Sử dụng các hình ảnh cơ sở nhỏ và mẫu xây dựng là những cách tuyệt vời để tạo ra các thùng chứa nhỏ hơn nhiều mà không cần nhiều công việc.

Gắn thẻ hình ảnh container của bạn

Gắn thẻ Docker là một công cụ đặc biệt mạnh mẽ đối với chúng tôi khi nói đến việc quản lý hình ảnh của chúng tôi. Nó giúp quản lý các phiên bản khác nhau của hình ảnh docker. Dưới đây là một ví dụ về xây dựng hình ảnh docker với tên thẻ v1.0.1

xây dựng docker -t geekflare / ubfox: v1.0.1

Bây giờ, có hai loại thẻ được sử dụng: Ổn định thẻ Độc nhất thẻ.

Sử dụng các thẻ ổn định để duy trì hình ảnh cơ sở của container. Tránh sử dụng các thẻ này cho các thùng chứa triển khai vì các thẻ này sẽ nhận được cập nhật thường xuyên và nó có thể dẫn đến sự không nhất quán trong môi trường sản xuất.

Sử dụng các thẻ duy nhất để triển khai. Sử dụng các thẻ duy nhất, bạn có thể mở rộng quy mô cụm sản xuất của mình thành nhiều nút một cách dễ dàng. Nó tránh sự không nhất quán và máy chủ sẽ không kéo bất kỳ phiên bản hình ảnh docker nào khác.

Ngoài ra, như một cách thực hành tốt, bạn nên khóa các thẻ hình ảnh đã triển khai bằng cách đặt chế độ ghi thành sai. Điều này giúp không xóa hình ảnh đã triển khai khỏi sổ đăng ký do nhầm lẫn.

An ninh container

Dưới đây là những điểm cơ bản để đảm bảo container được an toàn.

  • Xác minh tính xác thực của bất kỳ phần mềm nào bạn cài đặt trong bộ chứa của mình
  • Sử dụng hình ảnh hoặc hình ảnh docker có chữ ký với tổng kiểm tra hợp lệ.
  • Đảm bảo URL đang sử dụng HTTPS nếu bạn sử dụng kho lưu trữ của bên thứ ba.
  • Bao gồm các khóa GPG phù hợp trước khi sử dụng trình quản lý gói của bạn để cập nhật các gói
  • Không bao giờ chạy các ứng dụng của bạn như root. Bạn phải luôn luôn sử dụng chỉ thị người dùng bên trong dockerfile để đảm bảo rằng bạn bỏ các đặc quyền của người dùng của mình.
  • Không chạy SSH bên trong container của bạn.
  • Làm cho hệ thống tập tin chỉ đọc.
  • Sử dụng không gian tên để phân chia cụm của bạn.

Điểm chuẩn Docker đã được Trung tâm An ninh Internet (CIS) cung cấp để đánh giá tính bảo mật của container docker. Họ đã cung cấp một kịch bản mã nguồn mở được gọi là Docker băng ghế dự bị cho an ninh, mà bạn có thể chạy để kiểm tra mức độ an toàn của một docker container.

Một ứng dụng cho mỗi container

Các máy ảo khá tốt trong việc chạy song song nhiều thứ, nhưng khi nói đến các container, bạn nên chạy một ứng dụng bên trong một container. Ví dụ: nếu bạn đang chạy một ứng dụng MEAN trong môi trường được chứa, thì nó nên có một thùng chứa cho MongoDB, một thùng chứa cho Express.js, một thùng chứa cho Angular và một thùng chứa cho Node.js.

Ngay cả các container có thể chạy nhiều ứng dụng song song trong đó, nhưng sau đó bạn có thể tận dụng mô hình container. Dưới đây là một đại diện chính xác và sai của các ứng dụng đang chạy trong một container.

ứng dụng duy nhất một container - geekflare

Các thùng chứa được thiết kế để có vòng đời tương tự với ứng dụng mà nó chạy. Khi container khởi động, ứng dụng sẽ khởi động. Khi một container dừng lại, ứng dụng cũng dừng lại.

Chạy Container không quốc tịch

Các container được thiết kế cơ bản là không trạng thái. Trong trường hợp này, dữ liệu liên tục chứa thông tin về trạng thái của vùng chứa được lưu trữ bên ngoài vùng chứa. Các tệp có thể được lưu trữ trong kho lưu trữ đối tượng, chẳng hạn như lưu trữ đám mây, để lưu trữ thông tin phiên người dùng, bạn có thể sử dụng cơ sở dữ liệu có độ trễ thấp như Redis và bạn cũng có thể đính kèm ổ đĩa ngoài để lưu trữ ở cấp độ khối.

Bằng cách giữ bộ lưu trữ bên ngoài container, bạn có thể dễ dàng tắt hoặc phá hủy một container mà không sợ mất dữ liệu.

Nếu bạn sử dụng các container không trạng thái, việc di chuyển hoặc chia tỷ lệ theo nhu cầu kinh doanh rất dễ dàng.

Phần kết luận

Trên đây là một số thực tiễn quan trọng nhất mà người ta phải tuân theo khi làm việc với các container nếu bạn đang xây dựng môi trường Docker Production sau đó kiểm tra cách bảo mật nó.

THẺ

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map