Sanallaştırma şu ana kadar basit.
Bununla birlikte, burada farklı çözümleri olacak 2 ayrı kullanım durumunuz var.
1. Yeni dağıtımı deneyin
Dağıtımlar temel olarak paketlenmiş uygulamalar ve kullanıcı alanı ortamı tarafından belirlenir (örn . Önyükleme için SystemD
vs init
)
Farklı bir dağıtımın UIX'ini "nitel olarak" değerlendirmek "istiyorsan, işletim sistemini bütünüyle kurduğun ve kullanılabilirliğini değerlendirdiğin yerde tamamen sanallaştırmayı öneriyorum. Bu, diğer cevaplarda yeterince ele alınmıştır.
Eğer test için sadece kullanıcı ortamına ihtiyacınız varsa, okumaya devam edin.
2. Farklı ortamlarda test ve "atma örnekleri"
Kum havuzlu ortamlar oluşturmak için çekirdeği kullanan hafif bir sanallaştırma biçimi olan kapsayıcı kullanımı daha kolay, daha ucuz ve daha hızlıdır.
Bir kapsayıcı çekirdek kaynaklarını Ana Bilgisayarla paylaşır, ancak aksi takdirde kendi kök dosya sistemine, kullanıcı alanına, ağ yığınına vb chroot
. Sahiptir. Kavramsal olarak bir steroid olarak düşünülebilir . Bununla birlikte, çekirdek paylaşıldığından sanallaştırma "ince" olur; bunun anlamı, çoğu pratik amaç için ana işletim sistemi işletim sistemiyle aynı hızda çalışmasıdır.
Yaygın olarak kullanılan konteyner sistemi denir docker
. Docker, pratik olarak istediğiniz her linux dağıtımı için standartlaştırılmış görüntüler sunar ve pencerelerde çalışır (ancak, Windows görüntüleri yalnızca pencerelerde, linux görüntüleri her ikisinde de çalışır). Yerden ve performanstan tasarruf etmek için ek kullanışlı özelliklere sahiptir.
Aynı zamanda linux benzeri LXC
(çekirdeğin içine inşa edilmiştir!) Doğal olarak açık kaynak alternatifleri de vardır (ki bunlar aynı şey için kullanılabilir (ancak daha fazla konfigürasyon gerekli).
Basitleştirilmiş Test veya derleme ortamı örneği docker
# Dockerfile
FROM ubuntu:17.10
RUN apt-get update && apt-get install -y build-essential
WORKDIR /workdir
docker build --tag my-builder .
Ardından komut satırından projenizi veya bu ortamdaki testlerinizi çeşitli şekillerde derleyin
"giriş yap" ve çevre içinde derle, testleri çalıştır vb. Projenin kaynak dizininde olduğunu varsayarak.
$ 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 :) "
Tek seferlik kullan
$ docker run -v "$PWD:/workdir" --rm my-builder make
Ortam değişkenlerini bile geçebilirsiniz
$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make
Veya kalıcı bir örnek başlatın ve dosyaları açıkça kopyalayın
$ 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
Kelimenin tam anlamıyla yüzlerce başka kullanım modeli var, ancak komut dosyası benzeri görüntü tanımı, genişletilebilir görüntüler ve komut satırı kullanımı geliştirme, test ve hatta dağıtım ortamları için son derece çekici kılıyor