물리적인 컴퓨터 한 대에 하나의 OS를 깔고, 여러가지 프로그램을 설치하는 방식이다. 하드웨어적인 측면에서 장비의 영향에 맞추어 기술을 사용해야 한다는 점과, 여러 프로그램을 설치하는 경우 다른 프로그램에 영향을 미치는 단점이 존재한다.
가상머신을 기반으로 배포하는 방식으로, 하이퍼 바이저를 통해 하나의 서버에서 여러 개의 가상 컴퓨터를 구동할 수 있도록 하는 방식이다. 클라우드 컴퓨팅의 시초가 되며, 하드웨어의 성능을 주어진 환경에서 유연하게 변경이 가능하다는 장점과 이전의 전통적 배포 시 나타났던 문제를 각 가상화 컴퓨터마다 어플리케이션을 독립적으로 구동하는 방식을 통해 문제를 해결할 수 있었다.
단 가상화머신은 하나의 독립적은 컴퓨터를 생성하는 것이기 때문에, OS가 공유되지 않기 때문에, OS를 설치하는데 필요한 중복 비용이 발생한다는 단점이 있다.
컨테이너는 어플리케이션 코드 및 이를 실행하는데 필요한 모든 라이브러리를 패키징하는 소프트웨어의 단위이다. 컨테이너는 여러 어플리케이션을 독립적으로 구동한다는 점에서는 가상화와 유사하지만, 격리 속성을 완화하여 OS를 공유한다는 점에서 가상화 대비 훨씬 가벼운 환경에서 어플리케이션을 실행할 수 있다.
단 컨테이너는 OS를 공유하기 때문에, 다른 OS를 접하게 되는 경우, OS 환경에 따라 컨테이너에 문제가 발생할 수 있다.
도커는 컨테이너 배포에서 현재 가장 많이 사용되는 플랫폼으로, 코드 빌드, 라이브러리 설치, 환경변수 설정 등을 DockerFile에 작성하는 방법을 통해 손쉽게 이미지 기반 컨테이너를 생성할 수 있다는 점과, 기술의 버전이나 OS 환경 별 설정에 대응하기 쉽게 설계되었다는 장점이 있다. 예를들어, 동일한 DockerFile 을 기반으로 맥 환경의 이미지와 윈도우의 이미지 설정을 통해 각자의 운영체제에 맞게 컨테이너를 실행하는 것이 가능하다.
또한 도커는 쿠버네티스 혹은 도커 스웜과 결합하여, 대규모의 컨테이너를 관리할 수 있다는 점에서 운영적 측면의 장점도 가지고 있다.