6

웹 애플리케이션을 AWS EC2 인스턴스에 배포하기 위해 Octopus Deploy를 사용하고 있습니다. Octopus Deploy가 .NET과 관련이 있으며 Docker와 비교할 때 학습 곡선이 매우 쉽다는 것을 알고 있습니다. Docker 사용의 한 가지 점은 하이퍼 바이저를 사용하여 VM을 만드는 대신 컨테이너를 만드는 것입니다.Docker와 Octopus Deploy의 차이점

하지만 제 질문은 낙지를 사용하는 Docker를 사용해야하는 실제 이유는 무엇입니까? 이는 응용 프로그램을 배포 할 때 더 좋습니다. 그들은 다른 일을합니까?

답변

15

좋은 질문입니다. 그들은 서로 다른 일을하고 여러 가지 방식으로 일하지만, 그들이 제기하는 문제에는 몇 가지 중첩이 있습니다. Octopus는 내장 된 응용 프로그램을 운송하는 것에 관한 것입니다. Docker는 자체 포함 된 패키지에 응용 프로그램을 작성하는 것에 관한 것으로 컨테이너로 제공하고 실행할 수 있습니다.

면책 조항 : 은 내가 도커 선장 (Docker's community recognition program)를 그리고 난 도커에서 많은 시간을 투자했습니다. 나는 그것이 환상적인 기술이라고 생각하기 때문에 그것에 편향되어있다. - Octopus 우리 역시 훌륭하지만 범위는 더 작다. Docker에 대한 더 광범위한 개요가 필요하면 I talked about it recently on Channel 9.

Octopus를 사용하면 컴파일 된 ASP.NET 웹 응용 프로그램을 서버에 배포 할 수 있습니다. the Octopus Library을 사용하면 템플릿을 사용하여 배포의 일부로 응용 프로그램 플랫폼을 설정하고, IIS 구성, Windows 서비스 등을 실행할 수 있습니다. 그러나 서버에 사전 설정이 필요합니다 (.NET, IIS 등). Octopus가 필요합니다. 에이전트가 배포를 실행할 수 있도록 설치되어 있고이를 조정하기 위해 Octopus 서버가 필요합니다.

Docker를 사용하면 컴파일 된 ASP.NET 웹 응용 프로그램을 가져 와서 이미지로 만들 수 있습니다.이 이미지는 전체 응용 프로그램 스택을 포함하는 단일 논리 단위입니다. 이미지에는 IIS와 ASP.NET, 앱, 앱의 종속성 및 모든 구성이 있습니다. 이미지를 Docker 레지스트리 (공유 이미지 저장소)로 밀고 당길 수 있으며 Docker가 설치된 Windows 컴퓨터에서 앱을 실행할 수 있습니다. 호스트에 IIS 또는 ASP.NET이 설치되어 있지 않아도됩니다. 이미지 안에 모두 들어 있으므로 추가 인프라가 필요하지 않습니다. Docker는 호스트에서 Windows 서비스로 실행됩니다.

Docker는 앱을 실행하고 빌드하고 배송합니다. 응용 프로그램은 호스트의 가볍고 격리 된 샌드 박스 인 컨테이너에서 실행됩니다. 다른 버전의 .NET, 다른 버전의 IIS, 심지어 다른 Windows 버전의 응용 프로그램을 실행하는 컨테이너는 서로 영향을주지 않고 동일한 호스트에서 실행됩니다.

응용 프로그램을 여러 컨테이너로 분할 할 수 있으며 가상 네트워크에서 모두 서로 액세스 할 수 있으며 Docker Compose을 사용하여 복잡한 분산 솔루션을 캡처하여 파트와 해당 관계를 정의 할 수 있습니다. 여러 호스트를 함께 클러스터링하여 간편한 확장, 장애 조치 및 롤링 업그레이드를 제공하는 Docker Swarm으로 만들 수 있습니다. 또한 상업용 Docker Datacenter 제품을 사용하여 모든 이미지, 호스트 및 컨테이너를 관리하고 모든 이미지, 호스트 및 컨테이너를 안전하게 관리 할 수 ​​있습니다.

+0

와우는 매우 잘 설명 된 답변에 감사드립니다! .. 나는 지금 내가 독서광 애호가라고 생각합니다. 기본적으로 다시 말하면, IIS, ASP.Net 등의 서버에 모든 프로젝트 종속성을 수동으로 설치하지 않아도됩니다. 대신 이러한 종속성을 이미지에 적용하면 해당 이미지를 Registery로 푸시 할 수 있습니다. 모든 서버에서이 이미지를 사용할 수 있습니다. 이점은 새 서버에서 종속성의 전체 설치를 다시 수행 할 필요가 없다는 것입니다. 새 서버에 내 응용 프로그램을 푸시하고 싶습니다. –

+0

예. Docker를 사용하면 인프라 요구 사항이 (machine + network + Docker) 있습니다. 공개 레지스트리 인 이미지에 Docker Hub를 사용하거나 로컬에서 자체 레지스트리를 실행할 수 있습니다. –

+0

제 질문은 CI와 같은 문제 때문에 Teamcity에서 내 빌드와 유닛 테스트를 실행하면 커밋 된 후에는 별도로 수행해야 할 것입니다. 그렇다면이 애플리케이션을 도커 컨테이너에 다시 빌드하고 배포해야합니다. 컨테이너? 평소의 프로세스는 코드를 작성하고, 커밋하고, 팀 시티에서 빌드하고, 팀 시티에서 테스트를 실행하고, octopack으로 패키지를 만들고, 낙지로 배포하는 패키지를 배포하는 것입니다 ...하지만 Docker가 컴파일 된 버전을 제공한다고 말하면, 배송을 위해 컨테이너에 앱을 넣기 전에이 모든 단계를 완료 했습니까? –