Ảo hóa là đơn giản nhất.
Tuy nhiên, bạn có 2 trường hợp sử dụng riêng biệt ở đây, sẽ có các giải pháp khác nhau
1. Thử bản phân phối mới
Phân phối về cơ bản được xác định bởi các ứng dụng đóng gói và môi trường không gian người dùng (ví dụ: SystemD
so init
với khởi động)
Nếu bạn muốn "đánh giá" UIX của một bản phân phối khác, về mặt định tính, thì tôi sẽ khuyên bạn nên ảo hóa toàn bộ nơi bạn cài đặt toàn bộ HĐH và đánh giá khả năng sử dụng của nó. Điều này được bảo hiểm đầy đủ trong các câu trả lời khác.
Nếu bạn chỉ cần môi trường không gian người dùng để thử nghiệm thì hãy đọc tiếp.
2. Kiểm tra và "trường hợp vứt bỏ" trong các môi trường khác nhau
Sử dụng container hóa dễ dàng hơn, rẻ hơn và nhanh hơn, một hình thức ảo hóa trọng lượng nhẹ sử dụng kernel để tạo môi trường hộp cát.
Một thùng chứa chia sẻ tài nguyên hạt nhân với Máy chủ lưu trữ, nhưng mặt khác có hệ thống tệp gốc, không gian người dùng, ngăn xếp mạng, v.v. Nó có thể được coi là khái niệm như chroot
trên một steroid. Tuy nhiên, do kernel được chia sẻ nên ảo hóa là "mỏng", có nghĩa là đối với hầu hết các mục đích thực tế, nó chạy ở cùng tốc độ với HĐH máy chủ.
Có hệ thống container thường được sử dụng gọi là docker
. Docker đã chuẩn hóa hình ảnh cho thực tế mọi phân phối linux mà bạn muốn và nó chạy trên windows (tuy nhiên, hình ảnh windows chỉ hoạt động trên windows, hình ảnh linux hoạt động trên cả hai). Nó có thêm các tính năng hữu ích để tiết kiệm không gian và hiệu suất.
Ngoài ra còn có các lựa chọn thay thế nguồn mở cho linux như LXC
(được tích hợp vào kernel!), Có thể được sử dụng cho nhiều thứ tương tự (nhưng cần nhiều cấu hình hơn).
Ví dụ đơn giản về môi trường thử nghiệm hoặc xây dựng trong docker
# Dockerfile
FROM ubuntu:17.10
RUN apt-get update && apt-get install -y build-essential
WORKDIR /workdir
docker build --tag my-builder .
Sau đó, từ dòng lệnh, biên dịch dự án của bạn hoặc kiểm tra trong môi trường đó theo nhiều cách khác nhau
"đăng nhập" và biên dịch trong môi trường, chạy thử nghiệm, v.v ... Giả sử bạn đang ở trong thư mục nguồn của dự án
$ docker run -v "$PWD:/workdir" --rm -it my-builder /bin/bash
# echo "Now in docker container"
# make
...
# build/test/my-test
...
# exit
$ echo "Build artifacts are now on your host OS Directory :) "
Sử dụng một lần
$ docker run -v "$PWD:/workdir" --rm my-builder make
Bạn thậm chí có thể vượt qua các biến môi trường
$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make
Hoặc bắt đầu một thể hiện liên tục và sao chép các tệp vào nó một cách rõ ràng
$ Start our instance in background
$ docker run --name my-builder-inst -d my-builder
$ echo "Copy files to instance"
$ docker cp /my/source/dir my-builder-inst:/workdir
$ echo "run project build"
$ docker exec my-builder-inst make
$ echo "copy build artifacts"
$ docker cp my-builder-inst:/workdir/build /my/output/dir
$ echo "destroy and delete container"
$ docker rm -f my-builder-inst
Có hàng trăm mẫu sử dụng khác, tuy nhiên, định nghĩa hình ảnh giống như tập lệnh, hình ảnh có thể mở rộng và sử dụng dòng lệnh làm cho nó cực kỳ hấp dẫn cho các môi trường phát triển, thử nghiệm và thậm chí là triển khai