가상화가 가장 간단합니다.
그러나 여기에는 두 가지 별도의 사용 사례가 있으며 다른 솔루션이 있습니다.
1. 새로운 배포판을 사용해보십시오
배포판은 기본적으로 예 (패키지 된 응용 프로그램 및 사용자 공간 환경에 의해 결정되는 SystemD
대init
부팅)
다른 배포판의 UIX를 정 성적으로 "평가"하려면 OS를 전체적으로 설치하고 사용성을 평가하는 본격적인 가상화를 권장합니다. 이것은 다른 답변에서 적절하게 다루어집니다.
테스트를 위해 사용자 공간 환경이 필요한 경우 계속 읽으십시오.
2. 다른 환경에서 테스트 및 "던지기 인스턴스"
커널을 사용하여 샌드 박스 환경을 만드는 경량 가상화의 한 형태 인 컨테이너화를 사용하는 것이 더 쉽고 저렴하며 빠릅니다.
컨테이너는 호스트와 커널 리소스를 공유하지만, 그렇지 않으면 자체 루트 파일 시스템, 사용자 공간, 네트워크 스택 등을 갖습니다. 개념적으로는 chroot
스테로이드 라고 생각할 수 있습니다 . 그러나 커널이 공유되기 때문에 가상화는 "씬 (thin)"입니다. 이는 대부분의 실제 목적을 위해 호스트 OS와 동일한 속도로 실행됨을 의미합니다.
일반적으로 사용되는 컨테이너 시스템이 docker
있습니다. 고정 표시기는 당신이 원하는 거의 모든 리눅스 배포판 이미지를 표준화했다, 그리고 그것은 창에 (창문에 그러나 Windows 이미지에만 작업 모두에서 리눅스 이미지 작업)를 실행합니다. 공간과 성능을 절약 할 수있는 유용한 기능이 추가되었습니다.
LXC
(커널에 내장 된) 리눅스와 같은 네이티브 오픈 소스 대안도 있습니다 . 이것은 거의 같은 것에 사용할 수 있습니다 (그러나 더 많은 구성이 필요합니다).
테스트 또는 빌드 환경의 단순화 된 예 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 :) "
일회성으로 사용
$ 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
문자 그대로 수백 가지의 다른 사용 패턴이 있지만 스크립트와 같은 이미지 정의, 확장 가능한 이미지 및 명령 줄 사용은 개발, 테스트 및 배포 환경에 매우 적합합니다.