仮想化は非常に簡単です。
ただし、ここには2つの別々のユースケースがあり、異なる解決策があります
1.新しいディストリビューションを試す
ディストリビューションは、基本的にはパッケージ・アプリケーションによって決定され、ユーザ空間の環境(例えばされているSystemD
対init
ブート用)
別のディストリビューションのUIXを定性的に「評価」したい場合は、OSを完全にインストールして使いやすさを評価する本格的な仮想化をお勧めします。これについては、他の回答で十分に説明されています。
テストのために単にユーザースペース環境が必要な場合は、読み進めてください。
2.さまざまな環境でのテストと「スローアウェイインスタンス」
コンテナ化、つまりカーネルを使用してサンドボックス環境を作成する軽量仮想化の形式を使用する方が、簡単で、安価で、高速です。
コンテナはカーネルリソースをホストと共有しますが、それ以外の場合は独自のルートファイルシステム、ユーザースペース、ネットワークスタックなどを持ちchroot
ます。概念的にはステロイドと考えることができます。ただし、カーネルは共有されているため、仮想化は「シン」であり、ほとんどの実用的な目的では、ホストOSと同じ速度で実行されます。
と呼ばれる一般的に使用されるコンテナシステムがありdocker
ます。ドッキングウィンドウは、あなたが希望の実質的にすべてのLinuxディストリビューションのための画像を標準化している、そしてそれはWindows上で動作します(ただし、Windowsイメージウィンドウ上の作業のみ、Linuxイメージが両方で動作)。スペースとパフォーマンスを節約する追加の便利な機能があります。
LXC
(カーネルに組み込まれています!)のようなLinuxのネイティブオープンソースの代替もあります。これは、ほぼ同じものに使用できます(ただし、より多くの構成が必要です)。
テストまたはビルド環境の簡略化された例 docker
# Dockerfile
FROM ubuntu:17.10
RUN apt-get update && apt-get install -y build-essential
WORKDIR /workdir
docker build --tag my-builder .
次に、コマンドラインから、その環境でさまざまな方法でプロジェクトまたはテストをコンパイルします。
「ログイン」して環境内でコンパイルし、テストなどを実行します。プロジェクトのソースディレクトリにいると仮定します
$ 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 :) "
1回限りの使用
$ docker run -v "$PWD:/workdir" --rm my-builder make
環境変数を渡すこともできます
$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make
または、永続インスタンスを起動し、ファイルを明示的にコピーします
$ 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
文字通り何百もの他の使用パターンがありますが、スクリプトのような画像定義、拡張可能な画像、およびコマンドラインの使用は、開発、テスト、さらには展開環境にとっても非常に魅力的です