etc./StackOverFlow

격리된 환경을 만들기 위해 Vagrant 또는 Docker를 사용해야 합니까? [닫은]

청렴결백한 만능 재주꾼 2021. 11. 29. 22:34
반응형

질문자 :murtaza52


개발 및 배포에 Ubuntu를 사용하며 격리된 환경을 만들어야 합니다.

이를 위해 Vagrant 또는 Docker를 고려하고 있습니다. 장단점은 무엇이며 이러한 솔루션은 어떻게 비교됩니까?



면책 조항: 나는 Vagrant를 썼습니다! 그러나 Vagrant를 작성했기 때문에 Docker와 같은 소프트웨어가 포함된 DevOps 세계에서 대부분의 시간을 보냅니다. 저는 Vagrant를 사용하는 많은 회사와 함께 일하고 많은 회사가 Docker를 사용하며 두 회사가 어떻게 상호 작용하는지 봅니다.

너무 많이 이야기하기 전에 직접적인 대답을 드리겠습니다. 특정 시나리오(혼자 작업, Linux 작업, 프로덕션 환경에서 Docker 사용)에서는 Docker만 사용하고 작업을 단순화할 수 있습니다. 다른 많은 시나리오(더 자세히 설명함)에서는 그렇게 하기가 쉽지 않습니다.

Vagrant를 Docker와 직접 비교하는 것은 옳지 않습니다. 일부 시나리오에서는 겹치지만 대다수에서는 겹치지 않습니다. 실제로 더 적절한 비교는 Vagrant와 Boot2Docker(Docker를 실행할 수 있는 최소 OS)와 같은 것입니다. Vagrant는 추상화 측면에서 Docker보다 높은 수준이므로 대부분의 경우 공정한 비교가 아닙니다.

Vagrant는 개발 목적으로 앱/서비스를 실행하기 위해 실행합니다. 이것은 VirtualBox, VMware에 있을 수 있습니다. AWS, OpenStack과 같이 원격일 수 있습니다. 그 안에서 컨테이너를 사용하는 경우 Vagrant는 신경 쓰지 않고 이를 수용합니다. 예를 들어 Docker 컨테이너를 자동으로 설치, 풀다운, 빌드 및 실행할 수 있습니다. Vagrant 1.6을 통해 Vagrant는 도커 기반 개발 환경 을 가지며 Linux, Mac 및 Windows에서 Vagrant와 동일한 워크플로로 Docker 사용을 지원합니다. Vagrant는 여기에서 Docker를 대체하려고 하지 않고 Docker 방식을 수용합니다.

Docker는 특히 Docker 컨테이너를 실행합니다. Vagrant와 직접 비교하는 경우: 특히 더 구체적이고(Docker 컨테이너만 실행할 수 있음) 덜 유연합니다(Linux 또는 Linux 호스트가 어딘가에 필요함) 솔루션입니다. 물론 프로덕션이나 CI를 이야기한다면 Vagrant와 비교할 수 없습니다! Vagrant는 이러한 환경에 거주하지 않으므로 Docker를 사용해야 합니다.

조직에서 모든 프로젝트에 대해 Docker 컨테이너만 실행하고 Linux에서 실행하는 개발자만 있는 경우 Docker가 확실히 작동할 수 있습니다!

그렇지 않으면 실제 비즈니스/생산성 이점이 있는 Vagrant가 제공하는 많은 것을 잃기 때문에 Docker 단독으로 사용하려고 시도하는 것에는 이점이 없습니다.

  • Vagrant는 VirtualBox, VMware, AWS, OpenStack 등의 시스템을 시작할 수 있습니다. 필요한 것이 무엇이든 상관없이 Vagrant에서 실행할 수 있습니다. Docker를 사용하는 경우 Vagrant는 이들 중 하나에 Docker를 설치할 수 있으므로 해당 용도로 사용할 수 있습니다.

  • Vagrant는 모든 프로젝트에 대한 단일 워크플로입니다. 또는 다른 말로 하면, 사람들이 Docker 컨테이너에 있든 없든 프로젝트를 실행하는 방법을 배워야 하는 한 가지일 뿐입니다. 예를 들어 미래에 경쟁자가 Docker와 직접 경쟁하게 되면 Vagrant도 이를 실행할 수 있습니다.

  • Vagrant는 Windows(XP로 복귀), Mac(10.5로 복귀), Linux(커널 2.6으로 복귀)에서 작동합니다. 세 가지 경우 모두 워크플로는 동일합니다. Docker를 사용하는 경우 Vagrant는 이러한 세 시스템 모두에서 Docker를 실행할 수 있는 머신(VM 또는 원격)을 시작할 수 있습니다.

  • Vagrant는 네트워킹 및 폴더 동기화와 같은 일부 고급 또는 사소하지 않은 항목을 구성하는 방법을 알고 있습니다. 예: Vagrant는 고정 IP를 시스템에 연결하거나 포트를 전달하는 방법을 알고 있으며 사용하는 시스템(VirtualBox, VMware 등)에 관계없이 구성이 동일합니다. 동기화된 폴더의 경우 Vagrant는 로컬 원격 시스템(VirtualBox 공유 폴더, NFS, rsync, Samba [플러그인] 등)으로 파일을 전송합니다. Docker를 사용하는 경우 Vagrant가 없는 VM이 있는 Docker라도 수동으로 수행해야 하거나 이 경우 Vagrant를 재발명해야 합니다.

  • Vagrant 1.6은 도커 기반 개발 환경에 대한 최고 수준의 지원을 제공합니다. 이것은 Linux에서 가상 머신을 시작하지 않고 Mac 및 Windows에서 가상 머신을 자동으로 시작합니다. 최종 결과는 Docker로 작업하는 것이 모든 플랫폼에서 균일하지만 Vagrant는 네트워킹, 동기화된 폴더 등과 같은 지루한 세부 사항을 여전히 처리한다는 것입니다.

Vagrant 대신 Docker를 사용하는 것에 찬성하여 들었던 특정 반대 주장을 해결하려면 다음을 수행하십시오.

  • "움직이는 부분이 적습니다." - 예, 모든 프로젝트에 대해 Docker를 독점적으로 사용하는 경우 가능합니다. 그럼에도 불구하고 Docker 종속성을 위한 유연성을 희생하고 있습니다. 과거, 현재 또는 미래의 어떤 프로젝트에도 Docker를 사용하지 않기로 결정했다면 더 많은 변화를 겪게 될 것입니다. Vagrant를 사용했다면 나머지를 지원하는 하나의 움직이는 부분이 있습니다.

  • "더 빨라!" - 일단 Linux 컨테이너를 실행할 수 있는 호스트가 있으면 Docker는 가상 머신이 시작하는 것보다 컨테이너를 실행하는 데 확실히 더 빠릅니다. 그러나 가상 머신(또는 원격 머신)을 시작하는 것은 일회성 비용입니다. 하루 동안 대부분의 Vagrant 사용자는 실제로 VM을 파괴하지 않습니다. 개발 환경에 대한 이상한 최적화입니다. Docker가 정말 빛나는 프로덕션 환경에서는 컨테이너를 빠르게 회전/축소해야 할 필요성을 이해합니다.

이제 Docker를 Vagrant와 비교하는 것이 매우 어렵고 옳지 않다고 생각합니다. 개발 환경의 경우 Vagrant는 더 추상적이고 더 일반적입니다. Docker(및 Vagrant처럼 작동하도록 만들 수 있는 다양한 방법)는 Vagrant가 제공해야 하는 다른 모든 것을 무시하고 Vagrant의 특정 사용 사례입니다.

결론: 매우 구체적인 사용 사례에서 Docker는 확실히 Vagrant를 대체할 수 있습니다. 대부분의 사용 사례에서는 그렇지 않습니다. Vagrant는 Docker 사용을 방해하지 않습니다. 실제로 그 경험을 더 부드럽게 만들기 위해 할 수 있는 일을 합니다. 이것이 사실이 아닌 경우 Vagrant의 목표는 모든 시스템과 동등하게 잘 작동하는 것이기 때문에 개선을 위한 제안을 기꺼이 받아들입니다.

이것이 해결되기를 바랍니다!


Mitchell

저는 Docker의 저자입니다.

짧은 대답은 시스템을 관리하려면 Vagrant를 사용해야 한다는 것입니다. 그리고 애플리케이션 환경을 구축하고 실행하려면 Docker를 사용해야 합니다.

Vagrant는 가상 머신을 관리하기 위한 도구입니다. Docker는 애플리케이션을 경량 컨테이너에 패키징하여 구축 및 배포하는 도구입니다. 컨테이너는 종속성(실행 파일, 라이브러리, 구성 파일 등)과 함께 거의 모든 소프트웨어 구성 요소를 보유할 수 있으며 보장되고 반복 가능한 런타임 환경에서 실행할 수 있습니다. 이렇게 하면 앱을 한 번 빌드하고 테스트를 위해 랩톱에서, 라이브 배포를 위해 다른 서버 등에 배포하는 것이 매우 쉽습니다.

Linux에서만 Docker를 사용할 수 있다는 것은 일반적인 오해입니다. 그것은 잘못된 것입니다. Mac 및 Windows에 Docker를 설치할 수도 있습니다. Mac에 설치하면 Docker는 컨테이너의 래퍼 역할을 하는 작은 Linux VM(디스크에 25MB!)을 번들로 제공합니다. 일단 설치되면 이것은 완전히 투명합니다. Docker 명령줄을 똑같은 방식으로 사용할 수 있습니다. 이는 두 가지 장점을 모두 제공합니다. 컨테이너를 사용하여 애플리케이션을 테스트하고 개발할 수 있습니다. 컨테이너는 매우 가볍고 테스트하기 쉽고 이동하기 쉽습니다(예를 들어 재사용 가능한 컨테이너를 공유 하려면 https://hub.docker.com 참조). Docker 커뮤니티)가 있으며 어쨌든 목적을 달성하기 위한 수단일 뿐인 가상 머신 관리의 세부 사항에 대해 걱정할 필요가 없습니다.

이론적으로 Vagrant를 Docker의 추상화 계층으로 사용할 수 있습니다. 두 가지 이유로 이에 반대합니다.

  • 첫째, Vagrant는 Docker에 대한 좋은 추상화가 아닙니다. Vagrant는 가상 머신을 관리하도록 설계되었습니다. Docker는 애플리케이션 런타임을 관리하도록 설계되었습니다. 즉, Docker는 설계상 응용 프로그램과 더 다양한 방식으로 상호 작용할 수 있으며 응용 프로그램 런타임에 대한 더 많은 정보를 가지고 있습니다. Docker의 기본 요소는 프로세스, 로그 스트림, 환경 변수 및 구성 요소 간의 네트워크 링크입니다. Vagrant의 기본 요소는 기계, 블록 장치 및 ssh 키입니다. Vagrant는 단순히 스택의 낮은 위치에 있으며 컨테이너와 상호 작용할 수 있는 유일한 방법은 "부팅" 및 "로그인"할 수 있는 다른 종류의 시스템인 척하는 것입니다. 따라서 Docker 플러그인으로 "vagrant up"을 입력하면 멋진 일이 일어날 것입니다. Docker가 할 수 있는 모든 작업을 대체할 수 있습니까? 며칠 동안 기본 Docker를 사용해 보고 직접 확인하세요. :)

  • 둘째, 잠금 인수입니다. "Vagrant를 추상화로 사용하면 Docker에 고정되지 않습니다!". 기계를 관리하도록 설계된 Vagrant의 관점에서 이것은 완벽하게 이해됩니다. 컨테이너는 또 다른 종류의 기계가 아닌가요? Amazon EC2 및 VMware와 마찬가지로 프로비저닝 도구를 특정 공급업체와 연결하지 않도록 주의해야 합니다! 이것은 잠금을 생성합니다 - Vagrant로 모든 것을 추상화하는 것이 좋습니다. 이것이 Docker의 요점을 완전히 놓치는 것을 제외하고. Docker는 머신을 프로비저닝하지 않습니다. 어디에든 놓을 수 있는 가벼운 휴대용 런타임으로 애플리케이션을 래핑합니다.

애플리케이션에 대해 선택한 런타임은 시스템을 프로비저닝하는 방법과 관련이 없습니다! 예를 들어 다른 사람이 프로비저닝한 머신(예: 시스템 관리자가 배포한 EC2 인스턴스, Vagrant 사용) 또는 Vagrant가 전혀 프로비저닝할 수 없는 베어메탈 머신에 애플리케이션을 배포하는 경우가 많습니다. 반대로 Vagrant를 사용하여 응용 프로그램 개발과 관련이 없는 시스템을 프로비저닝할 수 있습니다(예: 바로 사용할 수 있는 Windows IIS 상자 등). 또는 Vagrant를 사용하여 Docker를 사용하지 않는 프로젝트용 머신을 프로비저닝할 수 있습니다. 예를 들어 종속성 관리 및 샌드박싱을 위해 rubygems와 rvm을 조합하여 사용할 수도 있습니다.

요약: Vagrant는 머신 관리용이고 Docker는 애플리케이션 환경 구축 및 실행용입니다.


Solomon Hykes

당신의 목적이 격리라면 Docker가 당신이 원하는 것이라고 생각합니다.

Vagrant는 가상 머신 관리자입니다. 이를 통해 가상 머신 구성과 프로비저닝을 스크립팅할 수 있습니다. 그러나 여전히 VirtualBox (또는 기타)에 의존하는 가상 머신이며 막대한 오버헤드가 있습니다. 대용량의 하드 드라이브 파일이 필요하고 많은 램이 필요하며 성능이 좋지 않을 수 있습니다.

반면 Docker는 LXC 를 통해 커널 cgroup 및 네임스페이스를 사용합니다. 이는 호스트와 동일한 커널 및 동일한 파일 시스템을 사용하고 있음을 의미합니다. 컨테이너의 프로비저닝 및 구성을 처리하기 위해 docker build 명령과 함께 Dockerfile을 사용할 수 있습니다. docs.docker.com 에 Dockerfile을 만드는 방법에 대한 예가 있습니다. 그것은 매우 직관적입니다.

Vagrant를 사용하려는 유일한 이유는 Ubuntu 상자에서 BSD, Windows 또는 기타 비 Linux 개발을 수행해야 하는 경우입니다. 그렇지 않으면 Docker로 이동하십시오.


creack

나는 많은 관심을 받고 있는 정말 깔끔한 솔루션으로 보이는 것에 대한 열렬한 관찰자 외에는 Docker에 대한 경험이 없음을 인정함으로써 답장을 시작합니다.

나는 Vagrant에 대한 상당한 경험이 있으며 그것을 강력히 추천할 수 있습니다. LXC 기반 대신 VM 기반이라는 점에서 확실히 더 무거운 솔루션입니다. 그러나 괜찮은 노트북(8GB RAM, i5/i7 CPU)은 개발 도구와 함께 Vagrant/VirtualBox를 사용하여 VM을 실행하는 데 문제가 없다는 것을 알았습니다.

Vagrant의 정말 좋은 점 중 하나는 구성 자동화를 위한 Puppet / Chef/shell 스크립트와의 통합입니다. 이러한 옵션 중 하나를 사용하여 프로덕션 환경을 구성하는 경우 원하는 것과 거의 동일한 개발 환경을 만들 수 있습니다. 이것이 바로 원하는 것입니다.

Vagrant의 또 다른 장점은 애플리케이션 코드와 함께 Vagrantfile의 버전을 지정할 수 있다는 것입니다. 즉, 팀의 다른 모든 사람이 이 파일을 공유할 수 있으며 모든 사람이 동일한 환경 구성으로 작업하고 있음을 보장합니다.

흥미롭게도 Vagrant와 Docker는 실제로 무료일 수 있습니다. Vagrant는 다른 가상화 공급자를 지원하도록 확장될 수 있으며 Docker가 가까운 장래에 지원을 받는 그러한 공급자 중 하나일 수 있습니다. 주제에 대한 최근 토론은 https://github.com/dotcloud/docker/issues/404를 참조하세요.


Chris Bushell

그들은 매우 보완적입니다.

저는 몇 달 동안 모든 프로젝트에 VirtualBox, Vagrant 및 Docker의 조합을 사용해 왔으며 다음과 같은 이점을 강하게 느꼈습니다.

Vagrant에서는 Chef 솔로 프로비저닝을 완전히 제거할 수 있으며 vagrant 파일에서 도커를 설치하는 하나의 작은 쉘 스크립트를 실행하는 머신을 준비하기만 하면 됩니다. 이것은 모든 프로젝트에 대한 내 Vagrantfile이 거의 동일하고 매우 간단하다는 것을 의미합니다.

다음은 일반적인 Vagrantfile입니다.

 # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "mark2" config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" [3000, 5000, 2345, 15672, 5672, 15674, 27017, 28017, 9200, 9300, 11211, 55674, 61614, 55672, 5671, 61613].each do |p| config.vm.network :forwarded_port, guest: p, host: p end config.vm.network :private_network, ip: "192.168.56.20" config.vm.synced_folder ".", "/vagrant", :type => "nfs" config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "2"] end # Bootstrap to Docker config.vm.provision :shell, path: "script/vagrant/bootstrap", :privileged => true # Build docker containers config.vm.provision :shell, path: "script/vagrant/docker_build", :privileged => true # Start containers # config.vm.provision :shell, path: "script/vagrant/docker_start", :privileged => true end

도커를 설치하는 부트스트랩 파일은 다음과 같습니다.

 #!/usr/bin/env bash echo 'vagrant ALL= (ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers apt-get update -y apt-get install htop -y apt-get install linux-image-extra-`uname -r` -y apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list apt-get update -y apt-get install lxc-docker -y apt-get install curl -y

이제 실행하는 데 필요한 모든 서비스를 얻으려면 다음과 같은 docker_start 스크립트가 있습니다.

 #!/bin/bash cd /vagrant echo Starting required service containers export HOST_NAME=192.168.56.20 # Start MongoDB docker run --name=mongodb --detach=true --publish=27017:27017 --publish=28017:28017 dockerfile/mongodb read -t5 -n1 -r -p "Waiting for mongodb to start..." key # Start rabbitmq docker run --name=rabbitmq --detach=true --publish=5671:5671 --publish=5672:5672 --publish=55672:55672 --publish=15672:15672 --publish=15674:15674 --publish=61613:61613 --env RABBITMQ_USER=guest --env RABBITMQ_PASS=guest rabbitmq read -t5 -n1 -r -p "Waiting for rabbitmq to start..." key # Start cache docker run --name=memcached --detach=true --publish=11211:11211 ehazlett/memcached read -t5 -n1 -r -p "Waiting for cache to start..." key # Start elasticsearch docker run --name=elasticsearch --detach=true --publish=9200:9200 --publish=9300:9300 dockerfile/elasticsearch read -t5 -n1 -r -p "Waiting for elasticsearch to start..." key echo "All services started"

이 예에서는 MongoDB, Elastisearch, RabbitMQ 및 Memcached를 실행하고 있습니다.

도커가 아닌 Chef 솔로 구성은 훨씬 더 복잡합니다.

마지막으로 큰 장점은 프로덕션으로 이동할 때 얻을 수 있습니다. 개발 환경을 도커를 실행하기에 충분한 구성을 가지고 있다는 점에서 모두 동일한 호스트 인프라로 변환한다는 것은 실제로 작업이 거의 없다는 것을 의미합니다.

관심이 있으시면 내 웹 사이트의 개발 환경에 대한 자세한 기사가 있습니다.

Vagrant / Docker 개발 환경 구현


Mark Stratmann

Vagrant-lxc 는 LXC를 사용하여 Vagrant를 프로비저닝할 수 있게 해주는 Vagrant용 플러그인입니다. 기본 vagrant VM(VirtualBox)에 있는 모든 기능이 있는 것은 아니지만 도커 컨테이너보다 더 많은 유연성을 허용해야 합니다. 링크에 볼 가치가 있는 기능을 보여주는 비디오가 있습니다.


GnarlinBrando

이제 Vagrant를 사용하면 Docker를 공급자로 사용할 수 있습니다. http://docs.vagrantup.com/v2/docker/ . VirtualBox 또는 VMware 대신 Docker 공급자를 사용할 수 있습니다.

Vagrant로 프로비저닝하기 위해 Docker를 사용할 수도 있습니다. 이것은 Docker를 공급자로 사용하는 것과 매우 다릅니다. http://docs.vagrantup.com/v2/provisioning/docker.html

즉, Chef 또는 Puppet 을 Docker로 대체할 수 있습니다. Docker를 제공자(VM)로, Chef를 프로비저닝자로 사용하는 것과 같은 조합을 사용할 수 있습니다. 또는 VirtualBox를 공급자로 사용하고 Docker를 공급자로 사용할 수 있습니다.


zainengineer

둘 다 사용하는 것은 애플리케이션 제공 테스트의 중요한 부분입니다. 저는 이제 막 도커에 참여하기 시작했고 소프트웨어를 구축하고 제공하는 데 엄청난 복잡성을 지닌 애플리케이션 팀에 대해 열심히 생각하고 있습니다. 고전적인 Phoenix 프로젝트/지속적인 전달 상황을 생각해 보십시오.

생각은 다음과 같습니다.

  • Java/Go 애플리케이션 구성 요소를 가져와 컨테이너로 빌드합니다(앱을 컨테이너에 빌드해야 하는지 아니면 빌드한 다음 컨테이너에 설치해야 하는지 확실하지 않음)
  • 컨테이너를 Vagrant VM에 전달합니다.
  • 모든 응용 프로그램 구성 요소에 대해 이 작업을 반복합니다.
  • 코딩할 구성 요소를 반복합니다.
  • Vagrant에서 관리하는 VM에 대한 전달 메커니즘을 지속적으로 테스트합니다.
  • 컨테이너를 배포할 시간이 언제인지 잘 알고 있으면 통합 테스트가 Docker 이전보다 훨씬 더 지속적으로 발생했습니다.

이것은 Vagrant가 지속적인 전달에서 Farley/Humble 사고와 결합된 개발용이라는 Mitchell의 진술의 논리적 확장인 것 같습니다. 내가 개발자로서 통합 테스트 및 애플리케이션 제공에 대한 피드백 루프를 줄일 수 있다면 더 높은 품질과 더 나은 작업 환경이 따를 것입니다.

개발자로서 지속적이고 일관되게 컨테이너를 VM에 제공하고 애플리케이션을 보다 전체적으로 테스트한다는 사실은 프로덕션 릴리스가 더욱 단순화될 것임을 의미합니다.

따라서 Vagrant는 Docker가 앱 배포에 미칠 놀라운 결과를 활용하는 방법으로 발전하고 있다고 봅니다.


Boyd Hemphill

승리를 위한 확실한 Docker!

알다시피 Vagrant는 가상 머신 관리용이고 Docker는 소프트웨어 컨테이너 관리용입니다. 차이점을 모르는 경우 다음을 참조하십시오. 소프트웨어 컨테이너는 다른 소프트웨어 컨테이너와 동일한 시스템 및 커널을 공유할 수 있습니다. 컨테이너를 사용하면 여러 운영 체제(커널)에서 리소스를 낭비하지 않기 때문에 비용을 절약할 수 있으며, 서버당 더 많은 소프트웨어를 포장할 수 있어 높은 수준의 격리를 유지할 수 있습니다.

물론 자신의 함정과 도전을 돌봐야 하는 새로운 학문입니다.

요구 사항이 단일 시스템 리소스 제한을 초과하는 경우 Docker Swarm으로 이동하십시오.


Jairo Andres Velasco Romero

실제 Oracle Java 잡지에 Vagrant(및 Puppet)와 함께 Docker를 사용하는 방법에 대한 정보를 제공하는 기사가 있습니다.

결론

Docker의 경량 컨테이너는 기존 VM에 비해 더 빠르며 CD 및 DevOps 이니셔티브의 일부로 개발자들 사이에서 인기를 얻고 있습니다. 목적이 격리라면 Docker가 탁월한 선택입니다. Vagrant는 개별 VM의 구성을 스크립팅하고 프로비저닝을 수행할 수 있는 VM 관리자입니다. 그러나 상대적으로 오버헤드가 큰 VirtualBox(또는 다른 VM 관리자)에 의존하는 VM입니다. 그것은 거대할 수 있고 많은 RAM을 필요로 하고 성능이 차선책일 수 있는 유휴 하드 드라이브가 필요합니다. Docker는 LXC를 통해 커널 cgroup 및 네임스페이스 격리를 사용합니다. 이것은 호스트와 동일한 커널 및 동일한 파일 시스템을 사용하고 있음을 의미합니다. Vagrant는 추상화 측면에서 Docker보다 높은 수준이므로 실제로 비교할 수 없습니다. Puppet과 같은 구성 관리 도구는 대상 환경을 프로비저닝하는 데 널리 사용됩니다. Docker를 사용하면 기존 Puppet 기반 솔루션을 쉽게 재사용할 수 있습니다. 인프라가 Puppet으로 프로비저닝되도록 솔루션을 분할할 수도 있습니다. 미들웨어, 비즈니스 애플리케이션 자체 또는 둘 다 Docker로 프로비저닝됩니다. Docker는 Vagrant에 의해 래핑됩니다. 이러한 도구 범위를 사용하면 시나리오에 가장 적합한 작업을 수행할 수 있습니다.

DevOps에서 Docker 컨테이너를 빌드, 사용 및 조정하는 방법 http://www.javamagazine.mozaicreader.com/JulyAug2015#&pageSet=34&page=0


Adrian Krebs

출처 : http:www.stackoverflow.com/questions/16647069/should-i-use-vagrant-or-docker-for-creating-an-isolated-environment

반응형