Các hệ điều hành Linux có nhiều tính năng khác nhau. Trong khi các hệ điều hành Linux như Ubuntu khá chung chung, thì các hệ điều hành khác lại chỉ nhắm đến một đối tượng thích hợp, ví dụ như: Kali Linux hướng tới bảo mật, các bản phân phối nhẹ thì có Xubuntu hay Hannah Montana Linux, Linux Vanilla hoạt động tốt với các máy tính để bàn. Tuy nhiên đối với các nhiệm vụ chuyên biệt như chạy một server, tốt nhất là tìm phiên bản được thiết kế riêng cho chức năng đó.
Các container 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 việc triển khai các container đơn giản. Đây là một trong những hệ điều hành Linux thích hợp mới nhất cho việc này. Hãy cùng tìm hiểu chi tiết về Container Linux ngay sau đây.
Tìm hiểu về Container Linux
Một số thông tin cơ bản về Container Linux
Trước khi đi sâu vào Container Linux, hãy bắt đầu với một cái nhìn tổng quan ngắn gọn về cấu trúc server. Container Linux được thiết kế để triển khai theo cụm. Triển khai theo cụm nghe có vẻ khá phức tạp, nhưng nó thực ra khá đơn giản. Về cơ bản, một cụm máy tính bao gồm nhiều server hoạt động cùng nhau. Do đó, chúng hoạt động như một đơn vị hoặc một hệ thống, chứ không phải là nhiều cá thể riêng biệt. Hơn nữa, các máy tính trong một cụm đặc trưng bởi các node và các server, thực hiện chức năng tương tự. Vì vậy, một node là một máy duy nhất, trong khi một cụm là một nhóm các server hoạt động cùng nhau.
Việc triển khai Container Linux phổ biến nhất diễn ra trong môi trường cụm. Distro, trước đây được gọi là CoreOS, thậm chí bao gồm các phương tiện để tạo một cụm từ chỉ một máy duy nhất. Tuy nhiên, tính năng xác định của Container Linux phụ thuộc vào các container.
Không giống như một hệ điều hành cho máy tính để bàn truyền thống, tất cả các ứng dụng chạy trong các container. Trong khi cả hai máy ảo (VM) và các container đều sử dụng các phương thức ảo hóa, thì các container vẫn có sự khác biệt. Không giống như các máy ảo, các container sử dụng cùng một hạt nhân của hệ điều hành làm máy chủ. Bởi vì các ứng dụng được đóng gói và máy chủ sử dụng cùng một hạt nhân, hiệu suất của việc triển khai container sẽ tăng lên. Trong một cấu hình máy ảo, mỗi máy ảo chạy một ứng dụng, cộng với một hệ điều hành khách. Nó chạy trên hệ điều hành và phần cứng máy chủ.
Việc triển khai container diễn ra trên phần mềm ảo hóa, thay vì chạy các ứng dụng trong container của chính nó. Docker vẫn là phần mềm container phổ biến nhất, mặc dù chroot, LXC, và Linux-VServer cũng là những lựa chọn đáng xem xét.
Tại sao phải sử dụng container?
Tóm lại, các container là một phương pháp ảo hóa. Vậy tại sao phải sử dụng Container? Thông thường các container cho người dùng sự cải thiện về hiệu suất. Bằng cách tránh các hệ điều hành riêng biệt và thay vì sử dụng một hạt nhân chia sẻ, người dùng có thể tối đa hóa CPU, dung lượng lưu trữ và hiệu quả bộ nhớ.
Vì bạn không cần chạy nhiều phiên bản hệ điều hành giống như trong cấu hình máy ảo, bạn có thể chạy nhiều container hơn. Cải tiến hiệu suất xuất phát từ sự cần thiết của một hệ điều hành duy nhất. Tương tự, bạn có thể tạo các container nhanh hơn trong môi trường máy ảo. Do đó các container phù hợp hơn để duy trì sự nhanh chóng, cũng như cho phép phân phối và tích hợp liên tục.
Dù container có những ưu điểm nhất định, nó vẫn không phải là một phương pháp ảo hóa hoàn hảo. Khi các container chia sẻ hạt nhân của hệ điều hành máy chủ, nó có thể gây ra các nguy cơ bảo mật. Bất kỳ lỗ hổng hoặc vi phạm nào tác động đến container đều có thể ảnh hưởng đến hệ điều hành. Nhưng có một cách giải quyết việc chạy các ứng dụng được chứa trên một hệ điều hành bên trong một máy ảo. Điều này đảm bảo rằng hệ điều hành máy chủ được phân lập từ hệ điều hành máy chủ container đơn.
Quá trình container hóa cũng yêu cầu các container sử dụng cùng một hệ điều hành. Với các máy ảo, mỗi ứng dụng đều có hệ điều hành riêng. Vì vậy, bạn không thể chạy các ứng dụng được thiết kế cho Windows Server trong môi trường Linux được container và ngược lại.
Container Linux là gì?
CoreOS, hoặc Container Linux, là một hệ điều hành Linux nguồn mở. Đó là một bản phân phối nhẹ nhằm mục đích triển khai theo cụm. Cụ thể hơn, CoreOS tập trung vào các triển khai đơn giản, đáng tin cậy và có khả năng mở rộng. Bạn sẽ không tìm thấy một trình quản lý gói. Thay vào đó, Container Linux yêu cầu tất cả các ứng dụng chạy bên trong các container. Container Linux sử dụng Chrome OS làm cơ sở. Vì vậy, Container Linux vẫn khá nhẹ. Để kiểm tra, tác giả đã chạy hệ điều hành Linux, trước đây được gọi là CoreOS, trong một máy ảo trên một máy tính xách tay HP Envy m6-1205dx AMD A10 cũ. Kết quả cho thấy việc tiêu thụ tài nguyên hệ thống vẫn khá thấp.
Bởi vì Container Linux đã loại bỏ được một số tính năng hệ điều hành Linux trên máy tính để bàn truyền thống, nên nó khá gọn nhẹ. Không giống như hệ điều hành trên máy tính để bàn, bạn sẽ không tìm thấy trình quản lý gói. Thay vào đó, tất cả các ứng dụng chạy dưới dạng các Docker container. Điều này tạo nên tính portable và tính cách ly dịch vụ. Nếu bạn muốn có một môi trường desktop, thì có lẽ bạn không nên thử Container Linux. Container Linux thiếu giao diện người dùng đồ họa. Thay vào đó, mọi thứ đều dựa trên dòng lệnh. Bảng điều khiển CoreUpdate cung cấp thông tin về tình trạng máy, các dịch vụ đang chạy và tình trạng cụm. Nhưng nó chỉ có sẵn như một thành phần trong gói đăng ký Premium Managed Linux.
Link tham khảo về Premium Managed Linux: https://coreos.com/products/container-linux-subscription/
Cấu trúc của Container Linux
Container Linux rất nhẹ và được thiết kế để chứa và phân cụm. Vì không có môi trường desktop, các chức năng cấu hình của nó khác với các hệ điều hành Linux như CentOS hoặc Ubuntu. Khi boot lần đầu, Container Linux sẽ tải một file cấu hình đám mây. Bạn sẽ cần nhập thông tin trong cấu hình đám mây. Điều này có thể hơi phức tạp, đặc biệt đối với những người không quen với cấu hình đám mây. Nhưng đó là một file quan trọng, cung cấp cho Container Linux khả năng tải các dịch vụ thiết yếu, thay đổi thông số và quản lý các cụm.
Hơn nữa, các etcd và fleet daemon vẫn không thể tách rời với Container Linux. Cả hai dịch vụ này khởi chạy theo mặc định. Ngoài ra, khi khởi động, file cấu hình đám mây cho máy chủ biết cách tham gia vào một cụm hiện có. Etcd daemon phân phối và lưu trữ dữ liệu cho các máy chủ trong một cụm. Điều đó là cần thiết để duy trì cấu hình cũng như khám phá dịch vụ. Fleet daemon tương tự như một init phân phối. Daemon này liên kết đến init hệ thống cho các máy chủ trong một cụm và quản lý các tác vụ như lập kế hoạch cho dịch vụ.
Mỗi hệ thống trong một cụm fleet chỉ chạy một fleetd daemon. Daemon này giả định 2 trách nhiệm chính: Hoạt động như tác nhân và như động cơ. Với vai trò là động cơ, daemon thực hiện các quyết định lên lịch. Với vai trò là tác nhân, nó thực thi các đơn vị. Trong cụm fleet, etcd là kho dữ liệu duy nhất. Các thông tin như sự hiện diện cụm, trạng thái đơn vị và các file đơn vị đều được lưu trữ trong etcd daemon. Ngoài ra, đó là phương tiện cho sự giao tiếp giữa động cơ và tác nhân fleet.
Đối tượng nào nên sử dụng Container Linux?
Container Linux miễn phí để tải về, gọn nhẹ, và khá đơn giản để cài đặt trong một máy ảo. Bất kỳ ai cần triển khai container nhanh chóng và có thể mở rộng, nên chọn sử dụng Container Linux. Các quản trị viên hệ thống và quản trị viên cơ sở dữ liệu sẽ hưởng lợi nhiều nhất từ Container Linux. Vì Container Linux thiếu môi trường desktop, nên nó phù hợp nhất để quản lý cụm và dùng trong cài đặt server. Nếu bạn đang tìm kiếm một hệ điều hành Linux server, Container Linux là một trong 12 bản phân phối Linux server tốt nhất.
Cách cài đặt Container Linux
Có rất nhiều phương tiện để cài đặt Container Linux. Theo trang web CoreOS (coreos.com), các nền tảng 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 số ít các hệ điều hành Linux tương thích với Azure. Nhờ có một cộng đồng sôi động, các nền tảng như Packet, Rackspace, Brightbox, VirtualBox và VMware cũng được hỗ trợ. Phương pháp đơn giản nhất là cài đặt Container Linux trên VirtualBox bằng cách sử dụng file ISO. Dưới đây là hướng dẫn nhanh về cách sử dụng VirtualBox.
Cấu hình VirtualBox
Mở VirtualBox và bạn sẽ được nhắc nhập tên máy ảo, loại hệ điều hành và phiên bản. Ví dụ này sẽ dùng tên máy ảo là CoreOS. Đối với loại hệ điều hành, chọn Linux. Về phiên bản, sử dụng Linux 2.6/3.x/4/x (64-bit). Rồi bấm Next.
Bây giờ, bạn sẽ cần phân bổ RAM của mình. CoreOS gợi ý tối thiểu là 1024MB RAM.
Sau khi chọn RAM, bạn sẽ cần phải thêm một ổ cứng ảo. Sử dụng tùy chọn tạo ổ cứng ảo ngay bây giờ.
Trên màn hình tiếp theo, bạn sẽ được nhắc nhập một file ổ cứng. Chọn VDI hoặc VirtualBox Disk Image.
Sau đó, định cấu hình dung lượng lưu trữ của bạn. Bạn nên sử dụng file ổ cứng được phân bổ linh động (Dynamically allocated).
Sau đó, chọn vị trí và kích thước file. Ví dụ giữ nguyên CoreOS mặc định làm tên và chọn kích thước file là 8GB.
Với máy ảo CoreOS VirtualBox đã được định cấu hình đúng, hãy tiếp tục và nhấp vào nút Start màu xanh lục.
Khi bạn nhấp vào Start, bạn sẽ cần phải chọn một ổ đĩa khởi động. Điều hướng đến thư mục mà bạn đã đặt CoreOS ISO và tiếp tục.
Định cấu hình Container Linux
Sau khi khởi động CoreOS ISO, Container Linux bắt đầu load. Cuối cùng bạn sẽ thấy một dòng cho phiên bản CoreOS của bạn và một dòng lệnh như sau:
core@localhost
Hãy nhập:
sudo openssl passwd -1 > cloud-config-file
Dòng lệnh sẽ xuất hiện một cảnh báo, nếu không thể mở file cấu hình. Nhập mật khẩu bạn muốn và tiếp tục. Tiếp theo nhập:
cat cloud-config-file
Điều này cho kết quả là một chuỗi dài và tạo một file cấu hình đám mây mới. Giờ hãy mở cloud-config trong trình chỉnh sửa trực quan:
vi cloud-config-file
Thao tác này sẽ tải một file cấu hình đám mây mà bạn có thể chỉnh sửa. CoreOS bao gồm một file ví dụ cấu hình đám mây nâng cao:
File trong ví dụ này sẽ như sau:
#cloud-config
users: moe
passwd: [SSL password]
groups:
- sudo
- docker
Bạn có thể kiểm tra file cấu hình đám mây của mình bằng cách nhập:
cat cloud-config-file
Sau khi hoàn tất file cấu hình. Nếu tất cả có vẻ tốt, hãy 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 rằng CoreOS đang được tải xuống, ghi và xác minh. Ngay sau khi kết thúc, bạn sẽ thấy thông báo cho biết “Success! CoreOS [version] is installed on /dev/sda.”
Tắt máy ảo CoreOS của bạn và sau đó khởi động lại. Khi bắt đầu sao lưu, hãy đảm bảo tháo ISO CoreOS hoặc đĩa CD trực tiếp khác có thể sẽ chạy lại.
CoreOS sẽ load và bạn sẽ thấy dấu nhắc đăng nhập trong dòng lệnh:
localhost login:
Nhập tên người dùng và mật khẩu của bạn. Thao tác này sẽ tải một thông báo có nội dung "Container Linux by CoreOS [version]" và một dòng lệnh mới.
Các bước tiếp theo
Bây giờ Container Linux của CoreOS đã được cài đặt đúng cách, bạn có thể bắt đầu thiết lập các container và các cụm. Tài liệu CoreOS có hướng dẫn nhanh chóng tuyệt vời, với các thông tin về phát hiện dịch vụ bằng cách sử dụng etcd, cũng như một phần về quản lý container với Docker. Tác giả đã thực hiện một vài bài kiểm tra nhanh như kéo “Hello World” Docker, cài đặt một hình ảnh Plex Docker, cuối cùng, thiết lập fleet để quản lý cụm.
Điều bạn sẽ làm trước tiên là định cấu hình các thành phần chính của Container Linux:
- etcd
- Docker
- Fleet
Bằng cách định cấu hình ba nền tảng chính này, bạn sẽ sẵn sàng cho việc khám phá dịch vụ, quản lý cụm và thiết lập container. Sau đó, bạn có thể bắt đầu các ứng dụng được container hóa và thử nghiệm ứng dụng dành cho desktop một cách an toàn trong Docker container.
Mọi người không thường xuyên sử dụng container, nhưng Container Linux sẽ làm đơn giản hóa việc triển khai các container. Tài liệu của Container Linux thật tuyệt vời với các file cấu hình mẫu. Lưu ý rằng đối với người mới bắt đầu, một số video hướng dẫn cài đặt không chính thức giúp cho việc cài đặt CoreOS dễ dàng hơn.
Container Linux rất nhẹ. Tuy nhiên, một số bước trong quá trình cài đặt ban đầu không "thân thiện với người mới bắt đầu" lắm. Việc cài đặt và thiết lập Container Linux đòi hỏi sự quen thuộc khi thao tác với Linux. Bảng điều khiển CoreUpdate được CoreOS cung cấp như một tính năng trả phí cao cấp. Với một số người dùng, sẽ không có vấn đề gì khi sử dụng dòng lệnh, nhưng một môi trường đồ họa để tiện theo dõi sẽ tốt hơn rất nhiều.
Quản trị viên hệ thống và quản trị viên cơ sở dữ liệu sẽ được hưởng lợi nhiều nhất từ Container Linux. Tuy nhiên đối với các server của gia đình, đó cũng vẫn là một phương tiện đơn giản và nhẹ để tạo môi trường theo cụm. Hơn nữa, với Container Linux, bạn có thể tạo một cụm từ một máy duy nhất. Nhưng Container Linux sẽ tuyệt vời hơn nếu làm việc với các container. Nếu bạn đang muốn tìm hiểu thêm về Docker và container, Container Linux chạy rất tốt trong máy ảo và cung cấp tất cả các tài nguyên bạn cần để bắt đầu.
Đây là giải pháp tuyệt vời dành cho người mới sử dụng Container, ngoài các kỹ sư, quản trị viên và quản trị viên cơ sở dữ liệu dày dạn kinh nghiệm của DevOps. Cuối cùng Container Linux của CoreOS là một phương tiện đơn giản để tạo ra một môi trường có thể mở rộng và hiệu quả.
Bạn có đang sử dụng CoreOS không? Nếu chưa thì bạn có dự định sử dụng nó không? Hãy cho chúng tôi biết ý kiến của bạn trong phần bình luận bên dưới nhé!
Xem thêm: