Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Container Linux Là Gì Và Bạn Có Nên Dùng Nó?

Hệ điều hành Linux có nhiều hương vị. Trong khi các OS Linux như Ubuntu khá chung chung, những cái khác nhắm đến niche (thị trường ngách). Có Kali Linux hướng bảo mật. Các distro nhẹ như Xubuntu, thậm chí Hannah Montana Linux(!). Cho dùng desktop, OS Linux vanilla hoạt động tốt. Tuy nhiên cho tác vụ chuyên biệt như chạy server, tốt nhất là tìm phiên bản điều chỉnh.

Container (container) đang ngày càng phổ biến. Container Linux, trước đây gọi là CoreOS, là một hệ điều hành Linux được thiết kế cho triển khai containerized (container hóa) đơn giản. Đây là một trong những OS Linux ngách mới nhất. Xem tổng quan và thực hành trực tiếp Container Linux.

Thực Tiễn Với Container Linux: Kiến Thức Nền

Trước khi đi sâu vào Container Linux, hãy bắt đầu với tổng quan ngắn gọn về kiến trúc server. Container Linux được thiết kế cho triển khai clustered (cụm). Triển khai cụm nghe phức tạp, nhưng nó khá đơn giản. Về cơ bản, một cụm máy tính bao gồm nhiều server làm việc cùng nhau. Do đó, chúng hoạt động như một đơn vị hoặc hệ thống đơn lẻ thay vì nhiều cái. Hơn nữa, máy tính trong cụm có node, hoặc server, thực hiện cùng chức năng. Vì vậy node là một máy đơn lẻ trong khi cụm là nhóm server làm việc cùng nhau.

Phần lớn triển khai Container Linux phổ biến là trong môi trường cụm. Distro trước đây gọi là CoreOS thậm chí bao gồm phương tiện để spin up (khởi động) một cụm từ chỉ một máy. Đặc điểm xác định của Container Linux, tuy nhiên, là sự phụ thuộc vào container.

Khác với OS desktop truyền thống, tất cả ứng dụng chạy trong container. Dù cả máy ảo (VM) và container đều dùng phương pháp ảo hóa, container khác biệt. Khác với VM, container sử dụng cùng nhân hệ điều hành kernel với máy host. Vì app containerized và máy host dùng cùng kernel, triển khai container hưởng lợi từ hiệu quả tăng lên. Trong cấu hình máy ảo, mỗi VM chạy một app cộng một guest OS. Điều này chạy trên host OS và phần cứng.

Triển khai containerized thay vào đó chạy app trong container riêng của chúng trên phần mềm ảo hóa. Docker vẫn là phần mềm container phổ biến nhất, dù chroot, LXC, và Linux-VServer nằm trong các lựa chọn thay thế Docker.

Thực Tiễn Với Container Linux: Tại Sao Dùng Container?

OK, container là phương pháp ảo hóa. Tại sao chọn môi trường containerized? Thông thường container cung cấp hiệu suất cải thiện. Bằng cách bỏ qua các hệ điều hành riêng biệt và thay vào đó dùng shared kernel (kernel chia sẻ), bạn tối đa hóa hiệu quả CPU, lưu trữ, và bộ nhớ.

Vì bạn không cần chạy nhiều instance hệ điều hành như trong cấu hình VM, bạn có thể chạy nhiều container hơn. Cải tiến hiệu suất xuất phát từ nhu cầu một hệ điều hành đơn lẻ. Tương tự, bạn có thể tạo container nhanh hơn trong môi trường máy ảo. Do đó container phù hợp hơn cho duy trì sự nhanh nhạy (agility) và cho phép continuous delivery và continuous integration (giao tiếp liên tục và tích hợp liên tục).

Phát triển Agile tập trung vào lặp lại và tính đến sự không thể dự đoán. Bạn có thể đọc Agile Manifesto để hiểu sâu hơn về triết lý agile. Tuy nhiên dù có lợi thế của container, nó không phải phương pháp ảo hóa hoàn hảo. Vì container chia sẻ host OS kernel, có rủi ro bảo mật. Mọi lỗ hổng hoặc vi phạm ảnh hưởng container sẽ có quyền truy cập vào hệ điều hành. Nhưng có workaround (giải pháp thay thế) là chạy app containerized trên OS trong máy ảo. Điều này đảm bảo host machine OS được cô lập từ container host OS đơn lẻ.

Container hóa cũng yêu cầu container dùng cùng hệ điều hành. Với máy ảo, mỗi app có OS riêng. Vì vậy bạn không thể chạy app thiết kế cho Windows Server trong môi trường containerized Linux và ngược lại.

Thực Tiễn Với Container Linux: Container Linux Là Gì?

CoreOS, hoặc Container Linux như nó được gọi bây giờ, là một hệ điều hành Linux mã nguồn mở. Đây là distro nhẹ nhắm tới triển khai cụm. Cụ thể hơn, CoreOS tập trung vào triển khai đơn giản, tin cậy, scalable (có thể mở rộng). Bạn sẽ không tìm thấy trình quản lý gói. Thay vào đó, Container Linux yêu cầu tất cả app chạy bên trong container. Container Linux dùng Chrome OS làm cơ sở. Do đó, Container Linux vẫn khá nhẹ. Để test, tôi chạy OS Linux trước đây gọi là CoreOS trong máy ảo trên laptop HP Envy m6-1205dx AMD A10 già. Tiêu thụ tài nguyên hệ thống ở mức khá thấp.

Vì Container Linux loại bỏ một số tính năng OS Linux desktop truyền thống, nó giữ distro nhẹ. Khác với OS desktop, bạn sẽ không tìm thấy trình quản lý gói. Thay vào đó, tất cả ứng dụng chạy như Docker container. Điều này tạo ra sự di động (portability) và cô lập dịch vụ (service isolation). Nếu bạn muốn môi trường desktop, bạn hết hứng. Container Linux thiếu giao diện người dùng đồ họa. Thay vào đó, mọi thứ dựa trên dòng lệnh. Bảng điều khiển CoreUpdate cung cấp thông tin về sức khỏe máy, dịch vụ chạy, và sức khỏe cụm. Nhưng nó chỉ có sẵn như một thành phần trong gói Premium Managed Linux subscription.

Kiến Trúc Container Linux

Container Linux nhẹ và được thiết kế cho container hóa và cụm. Vì không có môi trường desktop, cấu hình hoạt động khác với OS Linux như CentOS hoặc Ubuntu. Khi boot ban đầu, Container Linux tải file cloud-config. Bạn sẽ cần nhập thông tin vào cloud-config. Điều này có thể hơi tricky (khó xử), đặc biệt cho những người không quen với cloud-config. Nhưng nó là file thiết yếu cho phép Container Linux tải dịch vụ thiết yếu, thay đổi tham số, và quản lý cụm.

Hơn nữa, daemon

etcd

và

fleet

vẫn là cốt lõi của Container Linux. Cả hai dịch vụ này khởi động tại startup mặc định. Thêm vào đó, tại boot file cloud-config cho host biết cách tham gia cụm hiện có. Daemon

etcd

phân phối và lưu trữ dữ liệu cho host trong cụm. Nó thiết yếu cho duy trì cấu hình cũng như service discovery (khám phá dịch vụ). Daemon

fleet

tương tự như distributed init. Daemon này liên kết đến init

systemd

cho host trong cụm và lo việc như lập lịch dịch vụ.

Mỗi hệ thống trong cụm

fleet

chạy chỉ một daemon

fleetd

. Daemon này đảm nhận hai trách nhiệm chính đóng vai cả agent và engine. Là engine, daemon thực hiện quyết định lập lịch. Trong khi phía agent thực thi unit. Trong cụm fleet,

etcd

là datastore duy nhất. Thông tin như sự hiện diện cụm, trạng thái unit, và file unit đều được lưu trữ trong daemon

etcd

. Thêm vào đó, nó là trung gian cho giao tiếp fleet agent và engine.

Thực Tiễn Với Container Linux: Ai Nên Dùng Nó?

Container Linux miễn phí tải, nhẹ, và khá đơn giản cài trong máy ảo. Bất kỳ ai cần triển khai containerized nhanh, scalable nên chọn Container Linux. Hầu như system administrator (quản trị viên hệ thống) và database administrator sẽ hưởng lợi nhiều nhất từ Container Linux. Vì Container Linux thiếu môi trường desktop, nó phù hợp nhất cho quản lý cụm và trong setting server. Nếu bạn tìm OS Linux server, Container Linux là một trong 12 distro server Linux tốt nhất.

Air Pair có bài viết tuyệt vời về động lực CoreOS. Bài viết nhắc đến high availability (sẵn sàng cao), duy trì môi trường production, kiểm soát phiên bản phần mềm, và etcd như những điểm hấp dẫn chính để dùng Container Linux. Đáng chú ý, cũng có cộng đồng mã nguồn mở cực kỳ dedicated. Container Linux được điều chỉnh cho người dùng Linux có kinh nghiệm. Tài liệu giúp đỡ dù toàn diện nhưng giả định mức độ quen thuộc Linux vừa phải. Người mới và beginner có thể gặp chút khó khăn với cài đặt ban đầu.

Cụ thể hơn, cloud-config có thể là thách thức. Trong phần comment của một video cài CoreOS trên YouTube, user Setyoso Nugroho nói, "Nice tutorial! Quite confusing when learning #cloud-config file configuration in CoreOS." Mặc dù cấu hình không quá khó, Container Linux giả định nắm vững các tính năng Linux như trình soạn thảo VIM.

Thực Tiễn Với Container Linux: Cách Cài Đặt

Có nhiều phương tiện cài đặt Container Linux. Theo trang web CoreOS, platform chính thức bao gồm Amazon EC2, DigitalOcean, Microsoft Azure, bare metal, và OpenStack. Cùng với Oracle Linux, CentOS, và Suse, CoreOS là một trong vài OS Linux tương thích Azure. Nhờ cộng đồng sôi động, platform như Packet, Rackspace, Brightbox, VirtualBox, và VMware cũng được hỗ trợ. Tôi thấy phương pháp dễ nhất là cài Container Linux trên VirtualBox dùng file ISO. Đây là hướng dẫn nhanh cách dùng VirtualBox.

Cấu Hình VirtualBox

Mở VirtualBox và bạn sẽ được nhắc tên máy ảo, loại hệ điều hành, và phiên bản. Tôi đặt đơn giản là CoreOS. Với type, chọn Linux. Làm version, dùng Linux 2.6/3.x/4/x (64-bit). Click Next.

Bây giờ bạn cần cấp phát RAM. CoreOS khuyến nghị tối thiểu 1024 MB RAM.

Sau khi chọn RAM, bạn cần thêm ổ cứng ảo. Dùng tùy chọn create a virtual hard disk now.

Màn hình tiếp theo, bạn được nhắc loại file ổ cứng ảo. Chọn VDI, hoặc VirtualBox Disk Image.

Sau đó, cấu hình không gian lưu trữ. Tôi khuyên dùng dynamically allocated hard disk file.

Sau đó chọn vị trí file và kích thước. Tôi để mặc định CoreOS làm tên, và chọn kích thước dữ liệu 8 GB.

Với máy ảo CoreOS VirtualBox đã cấu hình đúng, tiến hành nhấn nút Start màu xanh.

Khi bạn click Start, bạn sẽ cần chọn ổ đĩa khởi động. Điều hướng đến thư mục bạn có CoreOS ISO và tiếp tục.

Cấu Hình Container Linux

Sau khi khởi động CoreOS ISO, Container Linux bắt đầu tải. Bạn cuối cùng sẽ thấy dòng cho phiên bản CoreOS và dòng lệnh đọc:

core@localhost

Gõ vào:

sudo openssl passwd -1 > cloud-config-file

Dòng lệnh trình bày cảnh báo nếu không thể mở file config. Nhập mật khẩu mong muốn và tiếp tục. Tiếp theo nhập:

cat cloud-config-file

Điều này trả về một chuỗi dài và tạo file cloud-config mới. Bây giờ mở cloud-config trong trình soạn thảo visual:

vi cloud-config-file

Điều này tải file cloud-config bạn có thể chỉnh sửa. CoreOS bao gồm file ví dụ cloud-config nâng cao:

Của tôi trông như:

#cloud-config
users: moe
passwd: [SSL password]
groups:
- sudo
- docker

Bạn có thể check file cloud-config bằng cách nhập:

cat cloud-config-file

Điều này trả về file config của bạn. Nếu trông tốt, tiến hành cài đặt CoreOS:

sudo coreos-install -d /dev/sda -C stable -c cloud-config-file

Bạn sẽ thấy thông báo CoreOS đang được tải xuống, ghi, và verify. Ngay khi đó xong, bạn sẽ thấy thông báo "Success! CoreOS [version] is installed on /dev/sda."

Tắt máy ảo CoreOS và khởi động lại nó. Khi khởi động lại, hãy chắc chắn unmount CoreOS ISO hoặc live CD sẽ chạy lại.

CoreOS sẽ tải và bạn sẽ thấy lời nhắc login trong dòng lệnh:

localhost login:

Nhập username và mật khẩu. Điều này sẽ tải thông báo "Container Linux by CoreOS [version]" và dòng lệnh mới.

Thực Tiễn Với Container Linux: Bước Tiếp Theo

Bây giờ Container Linux by CoreOS đã cài đặt đúng, bạn có thể bắt đầu thiết lập container và cụm. Tài liệu CoreOS có quickstart guide tuyệt vời. Có thông tin về service discovery dùng etcd cũng như phần về container management với Docker. Tôi thực hiện vài test nhanh như "Hello World" Docker pull. Thêm vào đó, tôi cài Plex Docker image vì tôi là fan media server. Cuối cùng, tôi thiết lập fleet cho quản lý cụm.

Điều bạn muốn làm đầu tiên là cấu hình ba thành phần chính của Container Linux:

  • etcd
  • Docker
  • Fleet

Bằng cách cấu hình ba nền tảng chính này, bạn sẽ sẵn sàng cho service discovery, quản lý cụm, và thiết lập container. Sau đó bạn có thể bắt đầu container hóa app và test an toàn app desktop trong container Docker an toàn.

Thực Tiễn Với Container Linux: Suy Nghĩ Cuối Cùng

Tôi không thường dùng container, nhưng Container Linux đơn giản hóa triển khai. Tài liệu xuất sắc với file config mẫu. Lưu ý cho beginner, một số video cài đặt không chính thức làm CoreOS install dễ dàng hơn. Mặc dù CoreOS tuyên bố Container Linux nhẹ, tôi ban đầu hoài nghi. Tuy nhiên tôi spin up Container Linux trong máy ảo với tiêu thụ tài nguyên khá thấp. Và vì tôi muốn test xem Container Linux có thực sự nhẹ không, tôi dùng laptop HP già, và không gặp vấn đề.

Tuy nhiên, một số bước trong cài đặt ban đầu không rất "beginner friendly" (thân thiện người mới). Cài đặt và thiết lập Container Linux yêu cầu sự quen thuộc Linux vững chắc. Đáng chú ý tôi không thử bảng điều khiển CoreUpdate, mà CoreOS cung cấp như tính năng premium trả phí. Mặc dù tôi không vấn đề dùng dòng lệnh, một môi trường đồ họa để giám sát sẽ là thêm tốt.

Quản trị viên hệ thống và database admin hưởng lợi nhiều nhất từ Container Linux. Tuy nhiên cho home server, nó là phương tiện đơn giản và nhẹ để tạo môi trường cụm. Hơn nữa, với Container Linux bạn có thể spin up cụm từ một máy đơn lẻ. Nhưng Container Linux là giới thiệu tuyệt vời để làm việc với container. Nếu bạn cố gắng học thêm về Docker và container, Container Linux chạy thực sự tốt trong máy ảo và cung cấp tất cả tài nguyên bạn cần để bắt đầu.

Đây là giải pháp out-of-the-box tuyệt vời cho người mới container ngoài ra các kỹ sư DevOps, sysadmin, và database admin có kinh nghiệm. Cuối cùng Container Linux by CoreOS là phương tiện đơn giản tạo môi trường containerized scalable, hiệu quả.

Bạn đang dùng CoreOS? Bạn định? Hãy cho chúng tôi biết bạn đang container hóa trên Linux như thế nào trong phần bình luận bên dưới!