Sejauh ini, virtualisasi adalah yang paling sederhana.
Namun Anda memiliki 2 kasus penggunaan terpisah di sini, yang akan memiliki solusi berbeda
1. Cobalah distro baru
Distribusi pada dasarnya ditentukan oleh aplikasi yang dikemas, dan lingkungan userspace (mis SystemD
vs init
untuk boot)
Jika Anda ingin "mengevaluasi" UIX dari distribusi yang berbeda, secara kualitatif, maka saya akan merekomendasikan virtualisasi penuh di mana Anda menginstal OS secara keseluruhan dan mengevaluasi kegunaannya. Ini tercakup secara memadai dalam jawaban lain.
Jika Anda hanya perlu lingkungan userspace untuk pengujian maka baca terus.
2. Menguji dan "membuang contoh" di lingkungan yang berbeda
Lebih mudah, lebih murah, dan lebih cepat untuk menggunakan containerisasi, suatu bentuk virtualisasi ringan yang menggunakan kernel untuk menciptakan lingkungan berpasir.
Sebuah wadah berbagi sumber daya kernel dengan Host, tetapi selain itu memiliki sistem file root sendiri, ruang pengguna, tumpukan jaringan, dll. Dapat dianggap, secara konseptual sebagai chroot
steroid. Namun, karena kernel dibagikan, virtualisasi itu "tipis", artinya untuk sebagian besar keperluan praktis ia berjalan pada kecepatan yang sama dengan OS host.
Ada yang biasa disebut sistem wadah docker
. Docker memiliki gambar standar untuk hampir semua distribusi linux yang Anda inginkan, dan ini berjalan di windows (namun, gambar windows hanya bekerja di windows, gambar linux bekerja pada keduanya). Ini memiliki fitur berguna tambahan untuk menghemat ruang dan kinerja.
Ada juga alternatif open source asli untuk linux seperti LXC
(yang dibangun ke dalam kernel!), Yang dapat digunakan untuk banyak hal yang sama (tetapi dengan lebih banyak konfigurasi diperlukan).
Contoh sederhana dari lingkungan pengujian atau pembangunan di docker
# Dockerfile
FROM ubuntu:17.10
RUN apt-get update && apt-get install -y build-essential
WORKDIR /workdir
docker build --tag my-builder .
Kemudian dari baris perintah, kompilasi proyek Anda atau tes di lingkungan itu dengan berbagai cara
"login" dan kompilasi dalam lingkungan, jalankan tes dll. Dengan asumsi Anda berada di direktori sumber proyek Anda
$ 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 :) "
Gunakan sekali saja
$ docker run -v "$PWD:/workdir" --rm my-builder make
Anda bahkan dapat melewatkan variabel lingkungan
$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make
Atau mulai contoh yang terus-menerus dan salin file ke dalamnya secara eksplisit
$ 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
Ada ratusan pola penggunaan lainnya, namun, definisi gambar seperti script, gambar yang dapat diperpanjang, dan penggunaan baris perintah membuatnya sangat menarik untuk pengembangan, pengujian, dan bahkan lingkungan penyebaran