일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인공지능
- 사이버보안
- 프로그래밍언어
- 네트워크
- 보안
- 클라우드컴퓨팅
- Yes
- 자바스크립트
- 자료구조
- 컴퓨터과학
- 버전관리
- 데이터구조
- 빅데이터
- 알고리즘
- 소프트웨어공학
- 데이터과학
- 컴퓨터비전
- 코딩
- I'm Sorry
- 웹개발
- 머신러닝
- 네트워크보안
- 데이터분석
- 컴퓨터공학
- 2
- 데이터베이스
- 소프트웨어
- 파이썬
- 딥러닝
- 프로그래밍
- Today
- Total
스택큐힙리스트
격리된 환경을 만드는 데 Vagrant 또는 Docker를 사용해야 하나요? [닫힘] 본문
닫혔습니다. 이 질문은 더욱 명확해져야 합니다. 현재 답변을 받지 않고 있습니다.
이 질문을 개선하고 싶나요? editing this post에 집중하도록 질문을 업데이트해주세요.
5년 전에 닫혔습니다.
Improve this question
제가 개발과 배포에 Ubuntu를 사용하고 격리된 환경을 만드는 필요성이 있습니다.
저는 이 목적으로 Vagrant 또는 Docker 중에 고려하고 있습니다. 이 두 가지 솔루션의 장단점이나 비교점은 무엇인가요?
답변 1
면책조항: 저는 Vagrant를 작성했습니다! 하지만 Vagrant를 작성했으므로 Docker와 같은 소프트웨어를 포함하는 DevOps 세계에서 대부분의 시간을 보냅니다. Vagrant를 사용하는 많은 회사들과 Docker를 사용하는 많은 회사들과 일합니다. 두 가지가 어떻게 상호작용하는지 볼 수 있습니다.
내가 너무 많이 이야기하기 전에, 직접적인 대답을 해 주겠습니다. 당신의 구체적인 시나리오 (혼자 일하며, Linux에서 작업하며, 제품 생산에 Docker를 사용하는)에서는 Docker만 사용하고 일을 간소화할 수 있습니다. 그러나 다른 많은 시나리오에서 (더 자세히 논의할 예정), 그렇게 간단하지 않습니다.
Vagrant를 Docker와 직접적으로 비교하는 것은 올바르지 않습니다. 어떤 경우에는 중복되지만 대부분 그렇지 않습니다. 사실, 더 적절한 비교는 Vagrant와 Boot2Docker(도커를 실행할 수 있는 미니멀 OS)와 같은 것입니다. Vagrant는 추상화 측면에서 Docker보다 높은 수준이므로 대부분의 경우 공정한 비교가 아닙니다.
배그란트(Vagrant)는 개발 목적으로 앱/서비스를 실행하는 도구입니다. 이는 VirtualBox, VMware 등에서도 가능하며 AWS, OpenStack과 같은 원격에서도 실행할 수 있습니다. 이 중 컨테이너를 사용한다면 Vagrant는 관심을 가지지 않고, 자동으로 Docker 컨테이너를 설치, 다운로드하여 빌드하고 실행할 수 있습니다. Vagrant 1.6 버전부터는 Linux, Mac 및 Windows에서 Docker를 Vagrant와 동일한 워크플로우로 사용할 수 있게 되었습니다. Vagrant는 Docker를 대체하려는 것이 아니라 Docker 관행을 수용합니다.
도커는 특히 도커 컨테이너를 실행합니다. 직접적으로 베이그런트와 비교한다면: 베이그런트보다 더 구체적이며(도커 컨테이너만 실행 가능), 덜 유연하며(리눅스 또는 리눅스 호스트가 필요함)솔루션입니다. 물론 프로덕션 또는 CI에 대해 이야기할 때 베이그런트와는 비교할 수 없습니다! 베이그런트는이 환경에서 살지 않으므로 도커를 사용해야합니다.
당신의 조직이 모든 프로젝트에 대해 도커 컨테이너만 실행하고 리눅스에서만 개발자가 작동한다면, 도커가 확실히 작동할 수 있습니다!
그렇지 않으면, Vagrant가 제공하는 실제 비즈니스 / 생산성 이점을 많이 잃으므로 단독으로 Docker를 사용하려는 시도에 대한 혜택을 보지 못합니다.
Vagrant는 VirtualBox, VMware, AWS, OpenStack 등의 머신을 실행할 수 있습니다. 필요한 것이 무엇이든 Vagrant는 실행할 수 있습니다. Docker를 사용하고 있다면, Vagrant는 이들 중 어떤 것이든 Docker를 설치하여 그 목적에 사용할 수 있습니다.
Vagrant는 모든 프로젝트에 대한 단일 작업흐름입니다. 다시 말해, Docker 컨테이너 내부에 있던 없던 모든 프로젝트를 실행하기 위해 사람들이 배우는 하나의 것입니다. 예를 들어, 우리가 앞으로 Docker와 직접 경쟁하는 경쟁자가 나타난다면 Vagrant는 그것도 실행할 수 있을 것입니다.
Vagrant는 윈도우즈(엑스피 이상), 맥(10.5 이상), 리눅스(커널 2.6 이상)에서 작동합니다. 이 모든 경우에 워크플로우는 동일합니다. Docker를 사용하는 경우, Vagrant는 이러한 시스템에서 Docker를 실행할 수 있는 머신(VM 또는 원격)을 시작할 수 있습니다.
Vagrant는 네트워킹 및 폴더 동기화와 같은 고급 또는 복잡한 설정 방법을 알고 있습니다. 예를 들어, Vagrant는 IP 주소를 고정시키거나 포트를 전달하는 방법을 알고 있으며 설정은 사용하는 시스템에 관계없이 동일합니다(VirtualBox, VMware 등). 동기화된 폴더의 경우, Vagrant는 로컬 파일을 원격 머신으로 가져오기 위한 여러 메커니즘을 제공합니다(VirtualBox 공유 폴더, NFS, rsync, Samba [플러그인] 등). Docker를 사용하는 경우, Vagrant가없는 VM의 Docker를 사용하는 경우이를 수동으로 수행해야하거나 이 경우 Vagrant를 다시 발명해야합니다.
Vagrant 1.6는 docker-based development environments에 대한 우선적 지원을 갖추고 있습니다. 이는 Linux에서 가상 머신을 실행하지 않으며, Mac과 Windows에서 자동으로 가상 머신을 실행합니다. 결과적으로 Docker와 함께 작업하는 방식은 모든 플랫폼에서 균일하며, Vagrant는 여전히 네트워킹, 동기화된 폴더 등과 같은 지루한 세부 사항을 처리합니다.
도커를 사용하는 것이 베이그란트 대신 유용한 이유로 들어진 특정 반박 주장에 대처하기 위해:
움직이는 파츠가 적습니다 - 예, 모든 프로젝트에 도커를 독점적으로 사용한다면 그렇습니다. 그러나 그것은 도커 락인을 위해 유연성을 희생합니다. 과거, 현재, 또는 미래에 어느 프로젝트에서도 도커를 사용하지 않기로 결정하면 더 많은 움직이는 파츠가 필요합니다. Vagrant를 사용했다면 나머지를 지원하는 단 하나의 움직이는 파트를 가지고 있습니다.
더 빠릅니다! - 리눅스 컨테이너를 실행할 수 있는 호스트를 가지고 있다면, 도커는 가상 머신보다 컨테이너를 실행하는 속도가 훨씬 빠릅니다. 하지만 가상 머신(또는 원격 머신)을 실행하는 것은 일회성 비용입니다. 대부분의 Vagrant 사용자들은 실제로 자신의 VM을 제거하지 않습니다. 이것은 개발 환경에 대한 이상한 최적화입니다. 실제 운영에서, 도커가 정말 빛을 발하는 곳에서, 컨테이너를 빠르게 시작/종료할 필요성을 이해합니다.
이제 분명하게 볼 수 있겠지만 Docker를 Vagrant와 비교하는 것은 매우 어렵고, 정확하지 않다고 생각합니다. 개발 환경에서 Vagrant는 더 추상적이고 더 일반적입니다. Docker(그리고 Vagrant처럼 동작하도록 만들 수 있는 다양한 방법)는 Vagrant의 특정 사용 사례이며, Vagrant가 제공하는 모든 것을 무시합니다.
결론적으로, 매우 구체적인 사용 사례에서는 Docker가 Vagrant의 대체 가능성이 있습니다. 대부분의 사용 사례에서는 그렇지 않습니다. Vagrant는 Docker 사용을 방해하지 않으며, 실제로 그 경험을 더욱 원활하게 만들기 위해 최선을 다합니다. 이게 사실이 아니라면, Vagrant의 목표는 어떤 시스템에서든 동일하게 잘 작동하도록하는 것이므로 개선 제안을 기꺼이 받겠습니다.
이것이 모든 것을 명확하게 해결해줄 것을 바랍니다!
답변 2
작은 규모부터 대규모까지 IT 프로젝트를 진행할때, 개발자들은 자신의 개발 환경을 만들어야 합니다. 이 작업은 종종 까다로울 수 있습니다. 이 작업의 가장 큰 문제는 서로 다른 컴퓨터에서 작업 할 때 발생하는 환경의 차이입니다.이러한 환경의 차이는 매우 치명적일 수 있습니다. 작성한 소스 코드가 다른 컴퓨터에서 작동하지 않는 경우, 이는 제품 출시에 치명적인 문제를 일으킬 수있는 심각한 문제가 될 수 있습니다.
많은 개발자들은 다른 해결책중 하나로 가상화 기술을 사용하고 있습니다. 이 문서에서는 가상화 기술을 사용하여 격리된 환경을 만들기위한 두가지 가상화 기술 인 Vagrant와 Docker에 중점을 둘 것입니다.
Vagrant는 가상 머신을 만드는 도구입니다. 이것은 특히 웹 애플리케이션을 구축하거나 구성할 때 필요한 다양한 프로그램과 라이브러리를 제공하여 서버 개발을 단순화합니다. 이후 더 이상의 구성을 위해 개발자가 순수한 가상 머신을 생성 할 수 있습니다.
도커는 컨테이너화의 개념을 사용하는 또 하나의 가상화 기술입니다. 이것은 하이브리드 서버 구성 및 클라우드 기반 컴퓨팅에 작동하기에 좋습니다. 이방식으로 개발자들이 배포할 응용 프로그램을 제작하고, 컨테이너에서 작동하므로 각 환경에 대한 세부 정보에 대한 걱정을 할 필요가 없으며 효율성이 좋습니다.
물론, 어떤 가상화 기술을 선택할 지에 대한 최종 결정은 단지 개발자가 선택한 프로젝트 형태 및 기술적 요구 사항에 따라 다릅니다. 개발자들은 각각의 지식사와 관련된 기술을 결정하고 신중하게 선택해야합니다.
종합하면, Vagrant와 Docker 모두 격리된 환경에서 개발자들이 프로젝트를 수행 할 수있는 가상화 기술입니다. 그러나 이 두 도구는 서로 다릅니다. Vagrant는 더 많은 유연성을 제공하지만, Docker로 개발자는 배포 할 응용 프로그램을 더 쉽게 구성 할 수 있습니다. 따라서 개발자는 프로젝트에서 필요한 다양한 기술적 요구 사항을 고려하여 더 적합한 가상화 도구를 선택해야합니다.