Đề XuấT, 2024

Editor Choice

Cách chạy nhiều bản phân phối bằng cách sử dụng các bộ chứa Linux

Linux Container (LXC) là một công nghệ ảo hóa nhẹ và chúng có nhiều cách sử dụng khác nhau. Nó là một phần của nhân Linux và có thể cho phép bạn mô phỏng một hoặc nhiều bản phân phối Linux trên một máy chủ Linux duy nhất. Hãy nghĩ về nó như một nền tảng trung gian giữa một công nghệ ảo hóa chroot và đầy đủ như VirtualBox, KVM hoặc Xen. Một công nghệ tương tự có mặt trong thế giới BSD là FreeBSD Jails.

Ví dụ, máy tôi đang viết là một máy tính xách tay chạy Linux Mint 18, được cung cấp bởi bộ xử lý Intel Atom và có RAM 2 GB ít ỏi. Tuy nhiên, tôi đang chạy ba thùng chứa Linux, mỗi thùng chứa một phiên bản của máy chủ web Apache đang chạy, mà không có hiệu năng lớn. Điều này sẽ không thể tưởng tượng được với một máy ảo truyền thống như VirtualBox. Vì vậy, nếu bạn muốn chạy nhiều bản phân phối trên hệ thống Linux của mình, Bộ chứa Linux sẽ làm tốt công việc của bạn.

Cài đặt và cấu hình bộ chứa Linux

Chúng tôi đang thiết lập LXC trên Linux Mint 18 64-bit. Các hướng dẫn cài đặt được cung cấp ở đây cũng sẽ hoạt động không được sửa đổi trên Ubuntu 16.04 trở lên. Nếu bạn đang sử dụng một bản phân phối khác, vui lòng tham khảo tài liệu chính thức của bản phân phối của bạn nếu có gì đó không hoạt động như mong đợi. Một sự quen thuộc với dòng lệnh và xử lý sự cố chung cũng được giả định.

Điều kiện tiên quyết

Dưới đây là một số điều bạn nên thiết lập để bắt đầu sử dụng nhiều bản phân phối:

1. Cài đặt LXC và phần mềm tiên quyết khác bằng cách sử dụng:

[sourcecode] sudo apt cài đặt lxc lxc-samples uidmap [/ sourcecode]

2. Bây giờ bạn cần cấu hình hồ sơ của bạn . Nhập các lệnh sau để thiết lập nó:

[mã nguồn] mkdir -p ~ / .config / lxc
tiếng vang "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .config / lxc / default.conf
tiếng vang "lxc.id_map = g 0 100000 65536" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
tiếng vang "lxc.network.type = veth" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
tiếng vang "lxc.network.link = lxcbr0" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
tiếng vang "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]

3. Sau đó, bạn cần thiết lập quyền người dùng như sau:

[sourcecode] sudo usermodletadd-subuids 100000-165536 $ USER
sudo usermodTHERadd-subgids 100000-165536 $ USER

sudo cgm tạo tất cả người dùng
sudo cgm chown tất cả người dùng $ (id -u) $ (id -g)
cgm movepid tất cả người dùng $$ [/ sourcecode]

Thiết lập Container của bạn

Bây giờ bạn đã cài đặt LXC Container cùng với phần mềm tiên quyết khác, đây là các bước để thiết lập Container:

1. Trong ví dụ này, chúng tôi sẽ thiết lập một bộ chứa Ubuntu, có tên ubu1 . Để làm điều đó, thực hiện lệnh sau:

[sourcecode] lxc-created HPtemplate tải xuống tên hiệu ubu1 [/ sourcecode]

2. Ở đây, tham số củatetemplate yêu cầu lxc tải xuống một hình ảnh được cấu hình sẵn từ internet, trong khi tham số của tên hiệu chỉ định tên của container - ubu1 trong trường hợp này. Bạn có thể sử dụng bất cứ tên nào bạn thích.

3. Bây giờ bạn sẽ thấy một danh sách các hình ảnh phân phối được hỗ trợ :

4. Nhập chi tiết cụ thể của bản phân phối mà bạn muốn cài đặt. Tôi sẽ cài đặt phiên bản 64 bit của Ubuntu 16.04 (tên mã xenial) tại đây:

5. Nếu bạn muốn cài đặt hình ảnh không tương tác, lệnh sau sẽ đạt được kết quả tương tự như trên:

[sourcecode] lxc-created -t download -n ubu1 - HPdist ub UbuntuTHERrelease xenial cámarch amd64 [/ sourcecode]

6. LXC hiện sẽ tải xuống và cài đặt hình ảnh xenial Ubuntu tối thiểu trên hệ thống máy chủ của bạn. Việc tải xuống và cài đặt có thể mất một chút thời gian tùy thuộc vào kết nối internet và tốc độ PC của bạn. Sau khi cài đặt, bạn sẽ thấy một màn hình như thế này:

Bây giờ bạn đã sẵn sàng để sử dụng bộ chứa Ubuntu mới thiết lập của mình.

Sử dụng nhiều bản phân phối với các bộ chứa Linux

Khởi động Container

Bắt đầu container của bạn bằng lệnh lxc-start :

[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]

Ở đây, tham số -n chỉ định tên của vùng chứa mà bạn muốn bắt đầu ( ubu1 trong trường hợp này) và tham số -d làm cho nó chạy trong nền .

Bạn có thể xác minh rằng container bắt đầu bằng cách sử dụng lệnh lxc-ls :

[sourcecode] lxc-ls -f [/ sourcecode]

Tham số -f cho phép báo cáo ưa thích . Ở đây, bạn có thể thấy rằng tôi có hai thùng chứa - một Debian (đã dừng) và một Ubuntu (đang chạy).

Truy cập và sử dụng Container của bạn

Bạn có thể truy cập bảng điều khiển của bộ chứa bằng lệnh lxc-attach :

[sourcecode] lxc-Đính kèm -n ubu1 [/ sourcecode]

Bây giờ bạn sẽ có một vỏ gốc trên container của bạn. Bạn nên thiết lập mật khẩu cho người dùng root và tạo tài khoản người dùng thông thường :

[mã nguồn] passwd
người nghiện beebom [/ sourcecode]

Tất nhiên, thay thế beebom bằng tên người dùng bạn muốn. Sau đó, bạn có thể cài đặt phần mềm và định cấu hình bộ chứa của mình giống như bạn làm trên một hệ thống thông thường. Ví dụ: trong bộ chứa Debian hoặc Ubuntu:

[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]

Dừng container của bạn

Sau khi bạn chơi xong với container, hãy sử dụng lệnh exit để quay lại hệ thống máy chủ . Bây giờ sử dụng lệnh lxc-stop để dừng container của bạn :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Điều này sẽ làm cho container bị tắt một cách sạch sẽ và nó sẽ không tiêu tốn thêm bất kỳ tài nguyên nào trên hệ thống của bạn, ngoại trừ không gian đĩa.

Nhân bản và Ảnh chụp nhanh

Bản sao

Khi bạn đã cài đặt các chương trình trong một thùng chứa và định cấu hình nó theo ý thích của mình, bạn có thể muốn tạo một hoặc nhiều bản sao của nó để dễ dàng cung cấp. Bạn có thể làm điều này bằng cách tạo một bản sao, đó là một bản sao chính xác của một container.

Ví dụ, để tạo một bản sao của bộ chứa ubu1 (hãy gọi nó là ubu2 ), trước tiên hãy dừng bộ chứa bằng lxc-stop, sau đó sử dụng lệnh lxc-copy :

[sourcecode] lxc-stop -n ubu

lxc-copy -n ubu1 -N ubu2 [/ sourcecode]

Ở đây, tùy chọn -n chỉ định vùng chứa nguồntùy chọn -N chỉ định tên của bản sao . Để xác minh rằng container đã được nhân bản, sử dụng lệnh lxc-ls :

Ảnh chụp nhanh

Giả sử bạn sắp thực hiện một số khả năng nguy hiểm hoặc khó khôi phục từ các thay đổi đối với vùng chứa, chẳng hạn như định cấu hình lại máy chủ web. Để giảm thiểu thiệt hại, bạn có thể tạo ảnh chụp nhanh của container trước khi thực hiện thay đổi như vậy. Trong trường hợp có lỗi xảy ra trong quá trình cấu hình, bạn chỉ cần dừng container và khôi phục nó về trạng thái làm việc trước đó bằng cách khôi phục ảnh chụp nhanh.

Để tạo ảnh chụp nhanh, trước tiên hãy dừng vùng chứa :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Sau đó, tạo ảnh chụp nhanh bằng lệnh lxc-snapshot :

[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]

Điều này tạo ra một ảnh chụp nhanh gọi là snap0 . Mọi ảnh chụp nhanh tiếp theo bạn tạo bằng lệnh này sẽ được gọi là snap1, snap2, v.v.

Sau này, bạn có thể khởi động container và thực hiện các thay đổi bạn muốn. Nếu bất cứ lúc nào bạn muốn quay lại ảnh chụp nhanh bạn đã tạo, hãy dừng vùng chứa và sử dụng lệnh lxc-snapshot với tham số -r để khôi phục ảnh chụp nhanh :

[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]

Điều này sẽ khôi phục snapshot snap0 vào thùng chứa ubu1 .

Tự động khởi động Container khi khởi động

Bạn có thể tạo một bộ chứa, ví dụ, bộ chứa máy chủ web, tự động khởi động khi bạn khởi động hệ thống của mình. Để thực hiện việc này, hãy truy cập tệp cấu hình của bộ chứa, nằm trong $HOME/.local/share/lxc//configthêm các dòng sau :

[mã nguồn] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

Dòng đầu tiên chỉ định rằng container nên được khởi động khi khởi động. Thứ hai bảo hệ thống đợi 5 giây trước khi bắt đầu container tiếp theo, nếu có.

Xử lý sự cố

Nếu bạn gặp khó khăn khi khởi động các container, điều đầu tiên cần thử là chạy lệnh lxc-start ở chế độ Tiền cảnh. Ví dụ:

[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]

Điều này sẽ cho bạn thấy các lỗi trên consol e hiện tại, rất hữu ích trong việc xác định bản chất của vấn đề.

Các vấn đề với việc chạy nhiều container đồng thời

Nếu bạn cố chạy nhiều container cùng một lúc, bạn có thể thấy các lỗi như Quota Quota đã đạt được, hoặc không thể tạo được mạng được cấu hình. Điều này là do bạn đang chạy nhiều giao diện mạng hơn so với phân bổ cho bạn. Bạn có thể tăng số lượng cầu nối mạng mà người dùng có thể chạy bằng cách sửa đổi tệp /etc/lxc/lxc-usernet thành root . Nó có thể trông giống như thế này:

[sourcecode] # USERNAME LOẠI CẦU CẦU
beebom veth lxcbr0 5 [/ sourcecode]

Bạn có thể thay đổi số ở cuối (5 trong ví dụ này), thành số lớn hơn như 10. Điều này sẽ cho phép bạn chạy tối đa 10 container cùng một lúc.

Các ứng dụng khác của Container Linux

Các thùng chứa Linux có nhiều cách sử dụng khác nhau. Bạn có thể sử dụng chúng làm hộp kiểm tra nhẹ, ví dụ, để kiểm tra các cấu hình khác nhau của máy chủ web hoặc cơ sở dữ liệu trước khi đưa chúng vào máy chủ sản xuất. Một trường hợp sử dụng khác là để kiểm tra cách một ứng dụng chạy trên các phiên bản khác nhau của các bản phát hành khác nhau.

Bạn cũng có thể sử dụng chúng để cách ly các ứng dụng mà bạn không tin tưởng - mọi thiệt hại mà ứng dụng đó gây ra sẽ bị giới hạn trong vùng chứa của chính nó và sẽ không ảnh hưởng đến hệ thống máy chủ. Xin lưu ý rằng mặc dù có thể chạy các ứng dụng GUI trong một thùng chứa, nhưng nó cần một lượng thời gian và công sức đáng kể và do đó không được khuyến khích. Nếu bạn muốn chạy các ứng dụng GUI trong hộp cát, hãy tham khảo bài viết của chúng tôi về cách ứng dụng hộp cát trong Linux.

Chạy nhiều bản phân phối đồng thời với các bộ chứa Linux

Do đó, kết thúc Cách thực hiện của chúng tôi khi chạy nhiều bản phân phối Linux trên một máy tính mà không cần đến máy ảo có kích thước đầy đủ. Tiện ích của công nghệ này chỉ bị giới hạn bởi sự sáng tạo của bạn, vì vậy hãy thoải mái thử nghiệm và tìm hiểu các trường hợp sử dụng mới lạ. Nếu bạn gặp khó khăn khi thiết lập các thùng chứa, vui lòng hỏi chúng tôi một câu hỏi trong phần bình luận.

Top