스택큐힙리스트

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하면서 한국어로 번역하십시오. 독립된 환경을 생성하기 위해 Vagrant 또는 Docker를 사용해야 할까요? [닫힘] 본문

카테고리 없음

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하면서 한국어로 번역하십시오. 독립된 환경을 생성하기 위해 Vagrant 또는 Docker를 사용해야 할까요? [닫힘]

스택큐힙리스트 2023. 9. 2. 09:24
반응형

닫혔습니다. 이 질문은 더 많은 'focused'가 필요합니다. 현재로서는 답변을 받지 않습니다.

닫힘 6년 전.

'

Improve this question

'

나는 개발과 배포를 위해 우분투를 사용하며, 격리된 환경을 만들어야 하는 필요가 있습니다.

저는 이 목적에 대해 Vagrant 또는 Docker 중 어느 것을 선택할지 고려하고 있습니다. 이러한 솔루션들은 어떤 장단점이 있으며 어떻게 비교됩니까?

답변 1

면책 조항: 나는 Vagrant를 작성했습니다! 그러나 Vagrant를 작성했기 때문에 주로 DevOps 세계에서 시간을 보내며 도커와 같은 소프트웨어를 사용합니다. 나는 Vagrant를 사용하는 많은 회사들과 협업하며 많은 회사들이 도커를 사용하는 것을 볼 수 있습니다. 그리고 두 가지가 어떻게 상호작용하는지 알 수 있습니다.

나가서 말하기 전에, 직접적인 대답을 드리겠습니다. 당신의 특정 시나리오에서 (홀로 작업하고, Linux를 사용하며, 제품션에서 Docker를 사용하는 경우) Docker만 사용하고 일을 단순화할 수 있습니다. 그러나 다른 많은 시나리오에서는 (더 자세히 설명할 것입니다) 그렇게 쉽지 않을 겁니다.

바그런트와 도커를 직접 비교하는 것은 옳지 않습니다. 어떤 상황에서는 겹치기도 하지만 대부분의 경우 그렇지 않습니다. 사실, 더 적절한 비교는 바그런트와 부트투도커(도커를 실행할 수 있는 최소한의 운영체제)와 같은 것들 사이의 비교입니다. 바그런트는 추상화 측면에서 도커보다 더 높은 레벨이므로 대부분의 경우 공정한 비교가 아닙니다.

바그란트(Vagrant)는 개발 목적으로 앱/서비스를 실행하기 위해 사용하는 도구입니다. 이를 위해 가상박스(VirtualBox), VMware 등에서 사용할 수 있고, AWS, OpenStack과 같은 원격 환경에서도 사용할 수 있습니다. 만약 컨테이너를 사용한다면, 바그란트는 무관하며 이를 내재화하여 Docker 컨테이너를 자동으로 설치, 다운로드, 빌드 및 실행할 수 있습니다. 바그란트 1.6 버전부터는 리눅스, 맥 및 윈도우 환경에서 바그란트와 동일한 워크플로우로 Docker를 사용할 수 있습니다. 바그란트는 Docker를 대체하려고 하지 않으며, Docker의 관행을 받아들입니다.

도커는 특정하게 도커 컨테이너를 실행합니다. 직접적으로 Vagrant와 비교한다면, 도커는 특정한 목적 (도커 컨테이너만 실행 가능) 이고, 유연성이 적습니다 (리눅스 또는 리눅스 호스트 somewhere이 필요). 물론 프로덕션 또는 CI(Continuous Integration)에 대한 대화일 경우 Vagrant와 비교될 게 없습니다! Vagrant는 이러한 환경에서 살아 숨 쉬지 않으므로 도커를 사용해야 합니다.

당신의 조직이 모든 프로젝트에 대해 Docker 컨테이너만을 사용하고, 개발자들이 모두 리눅스에서 운영한다면, Docker는 분명히 도움이 될 수 있습니다!

그렇지 않으면, 도커를 혼자 사용하는 것은 기술적으로 도움이 되는 것이 없습니다. 왜냐하면 Vagrant가 제공하는 많은 혜택을 잃어버리기 때문입니다. 이는 실제 비즈니스 및 생산성 측면에서 혜택이 있습니다.

Vagrant는 VirtualBox, VMware, AWS, OpenStack 등의 가상 머신을 시작할 수 있습니다. 당신이 필요로 하는 것에 상관없이 Vagrant는 그것을 시작할 수 있습니다. 만약 Docker를 사용하고 있다면, Vagrant는 이러한 가상 머신에 Docker를 설치하여 원하는 목적으로 사용할 수 있도록 할 수 있습니다.

Vagrant는 모든 프로젝트에 대한 단일한 워크플로우입니다. 다른 말로 하면, 도커 컨테이너에 있건 없건 프로젝트를 실행하기 위해 사람들이 배워야 할 것은 단 하나뿐입니다. 예를 들어, 미래에 도커와 직접 경쟁할 경쟁자가 나타나면 Vagrant가 그것도 실행할 수 있을 것입니다.

Vagrant는 Windows (XP로 돌아가는), Mac (10.5 이전로 돌아가는) 그리고 Linux (kernel 2.6로 돌아가는)에서 작동합니다. 이 세 가지 경우 모두 워크플로우는 동일합니다. Docker를 사용하는 경우 Vagrant는 이 세 시스템의 모두에서 Docker를 실행할 수 있는 가상 머신 (VM 또는 원격)을 시작할 수 있습니다.

바그란트는 네트워킹이나 폴더 동기화와 같은 일반적이지 않거나 복잡한 설정을 구성할 수 있는 방법을 알고 있습니다. 예를 들어: 바그란트는 머신에 정적 IP를 연결하거나 포트를 전달하는 방법을 알고 있으며,이 구성은 어떤 시스템을 사용하든 동일합니다 (VirtualBox, VMware 등). 동기화된 폴더의 경우, 바그란트는 로컬 파일을 원격 머신으로 가져오기 위한 다양한 메커니즘을 제공합니다 (VirtualBox 공유 폴더, NFS, rsync, Samba [플러그인] 등). Docker를 사용하는 경우, 심지어 바그란트 없이 VM과 함께 Docker를 사용하는 경우, 이 작업을 수동으로 수행하거나 해당 경우에 바그란트를 재창조해야합니다.

Vagrant 1.6은 'docker-based development environments' 에 대한 일급 지원을 제공합니다. 이는 리눅스에서 가상 머신을 시작하지 않고 맥과 윈도우에서 자동으로 가상 머신을 시작합니다. 결과적으로 도커 작업은 모든 플랫폼에서 통일되며, 네트워킹, 동기화된 폴더 등과 같은 귀찮은 세부 사항은 여전히 Vagrant가 처리합니다.

도커를 사용하는 방향에서 들어본 특정 반론에 대응하여 말씀드리자면:

더 이동 부품이 적습니다 - 예, 만약 도커를 모든 프로젝트에 배타적으로 사용한다면 가능합니다. 그렇지만 그럴 경우, 도커 락인을 위해 유연성을 희생하게 됩니다. 만약 과거, 현재, 미래의 프로젝트 중 어떤 것에도 도커를 사용하지 않기로 결정한다면, 더 많은 이동 부품이 생기게 됩니다. 만약 방그란트를 사용했다면, 나머지를 지원하는 하나의 움직이는 부품을 가지게 되었을 것입니다.

빨라요! - Linux 컨테이너를 실행할 수 있는 호스트를 가지고 있을 때, Docker는 컨테이너를 실행하는 데 가상 머신보다 훨씬 빠릅니다. 하지만 가상 머신 (또는 원격 머신)을 실행하는 것은 일회성 비용입니다. 하루 종일, 대부분의 Vagrant 사용자는 실제로 자신의 가상 머신을 삭제하지 않습니다. 이것은 개발 환경을 위한 이상한 최적화입니다. Docker가 정말 빛을 발하는 프로덕션 환경에서는 컨테이너를 빠르게 시작/종료해야 할 필요성을 이해합니다.

나는 이제 그것이 매우 어렵고 정확하지 않다고 믿는다. 도커와 베이그란트를 비교하는 것은 이제 명확하게 보인다. 개발 환경에서는 베이그란트가 더 추상적이고 일반적이다. 도커(그리고 도커를 베이그란트처럼 작동하게 만드는 다양한 방법)는 베이그란트의 다른 모든 기능을 무시한 베이그란트의 특정 사용 사례이다.

결론적으로 말하자면: 매우 특수한 사용 사례에서 Docker는 Vagrant에 대한 가능한 대체물입니다. 대부분의 사용 사례에서는 그렇지 않습니다. Vagrant는 Docker의 사용을 방해하지 않습니다. 실제로 Vagrant는 사용 경험을 더 원활하게 만들기 위해 최선을 다합니다. 이게 사실이 아니라면, 어떤 제안을 받아들일 의향이 있습니다. Vagrant의 목표는 어떠한 시스템과도 똑같이 잘 작동하는 것이기 때문입니다.

이것이 모든 것을 명확하게 해 줄 것을 기대합니다!

답변 2

비즈니스와 개인 프로젝트에서 고립된 환경을 구축하는 데 도움이 되는 도구로서 Vagrant와 Docker가 널리 사용되고 있습니다. Vagrant와 Docker는 각각의 장단점을 가지고 있으며, 어떤 도구를 선택해야 할지 결정하기 전에 비교해 보는 것이 중요합니다.

Vagrant는 가상화 소프트웨어를 사용하여 가상 머신을 관리하는 데 도움이 되는 오픈 소스 도구입니다. Vagrant는 프로비저닝과 설정 관리를 쉽게 해주는 가상 머신 운영체제라고 할 수 있습니다. Vagrant의 가장 큰 장점 중 하나는 공통 구성 관리를 제공한다는 점입니다. 사용자는 Vagrant를 통해 정의한 구성 파일을 통해 개발 환경을 쉽게 공유하고 재생성할 수 있습니다. 이로 인해 팀의 개발환경을 일관되게 유지할 수 있으며, 협업에 큰 이점을 제공합니다. 또한 Vagrant는 다양한 가상화 소프트웨어와 통합이 가능하며, 가상 머신을 매우 쉽게 관리할 수 있는 편리한 CLI(Command Line Interface)를 제공합니다.

그러나 Vagrant에는 몇 가지 단점도 있습니다. 가장 큰 문제는 가상 머신을 관리하기 위해 많은 자원을 사용한다는 것입니다. 가상화 소프트웨어 운영체제의 시작 시간과 용량은 실제 머신에 비해 상당히 느릴 수 있습니다. 또한 다양한 가상화 소프트웨어 플러그인을 설치하려면 추가적인 구성이 필요합니다. 이로 인해 초기 설정에 시간과 노력이 더 많이 소모될 수 있습니다.

한편, Docker는 운영 체제 수준의 가상화 플랫폼이며, 가상 머신 생성에 대비해 훨씬 빠르고 가볍게 동작합니다. Docker를 사용하면 애플리케이션과 해당 종속성을 더 작고 이식성이 높은 컨테이너로 패키징할 수 있습니다. 이로 인해 개발 환경을 더욱 쉽게 배포하고 공유할 수 있으며, 코드 실행 속도도 향상됩니다. Docker는 구성 정보를 담은 Dockerfile을 사용하여 환경을 정의하고, 이를 기반으로 환경을 재현 및 공유하는 데 탁월한 성능을 발휘합니다.

하지만 Docker도 일부 단점을 가지고 있습니다. 가장 큰 문제는 Docker 컨테이너를 실행하기 위해 프로세스 내에 추가적인 격리 계층이 필요하다는 것입니다. 이로 인해 일부 애플리케이션에서는 약간의 성능 저하가 발생할 수 있습니다. 또한, 일부 복잡한 환경 설정에는 추가적인 노력이 필요할 수 있습니다.

따라서 Vagrant와 Docker는 각각의 장단점을 가지고 있으며, 선택은 사용자의 용도와 선호도에 따라 달라집니다. Vagrant는 가상 머신 관리와 공통 구성 관리를 강조하는 반면, Docker는 가벼운 컨테이너 기반 가상화를 강조합니다. 개발 환경의 구축과 팀 협업을 중요시하는 경우에는 Vagrant를 고려할 수 있습니다. 반면, 배포와 실행 속도 측면에서 뛰어난 경험을 제공하는 Docker는 많은 유저들에게 편리한 솔루션입니다.

최종 결론은 어떤 환경을 구축하느냐, 그리고 사용자의 경험과 용도에 따라 다를 수 있습니다. 따라서 자신의 요구 사항과 목표를 고려하여 Vagrant와 Docker의 특징을 살펴보고, 선택을 잘 고려해야 합니다.

반응형
Comments