장점 : 독립된 환경, 이미지를 직접 만들고 배포 할 수 있다.
단점 : 도커 컨테이너는 스테이트리스(stateless)이며, 불변적(immutable)이다. 컨테이너는 해당 콘텐츠를 담은 이미지로부터 시작되고 실행된다. 이미지는 기본적으로 일단 생성되면 변경되지 않는다. 그러나 컨테이너 인스턴스는 일시적(transient)이다. 인스턴스가 시스템 메모리로부터 제거되면 이는 영원히 사라진다. VM처럼 컨테이너를 세션들에 걸쳐 지속시키려면 지속성을 위한 설계가 필요하다.
장점 : 모드 동일한 하드웨어를 공유하면서 다수의 다른 실행 활경을 동시에 실행할 수 있다, 가상기계들끼리 서로 보호되는 것처럼 호스트시스템도 가상기계들로부터 보호된다
단점 : 각 VM은 자체 운영체제를 필요로 하고, 이들은 일반적으로 대형이고, 시작이 느리고, 이동이 어렵고, 유지관리와 업그레이드가 까다롭다.
용도
- 팀원 모두에게 동일한 개발환경 제공
- 개발 환경에서 팀원 모두에게 동일한 개발환경을 제공할 수 있음
- 개발 환경과 운영 환경의 차이가 근본적으로 사라짐
- 새로운 버전의 테스트
- 격리된 환경을 이용해 운영체제나 라이브러리 등 새로운 버전을 먼저 개발환경에서 테스트한 후 운영 환경에 적용 가능
- 변경된 환경에 대한 테스트에도 유용
장점
- 독립된 환경
- 독립된 환경은 여러개의 컨테이너를 띄울 수 있게 함
- 똑같은 애플리케이션 여러개도 가능
- 일부 교체/수정 가능
- 이미지를 만들 수 있다
- 이미지를 직접 만들고 배포 가능
- 이미지를 내려받아 컨테이너 사용 가능
- 교체/업데이트가 쉬움 -> 이동성이 좋음
- 컨테이너에 커널을 포함시킬 필요가 없다
- 가벼움
단점
- 리눅스용 소프트웨어밖에 지원하지 않음
- 리눅스 운영체제를 사용하는 기술이기 때문
- 호스트 서버 문제가 생기면 모든 컨테이너에 영향을 미친다.
- 물리 서버 한 대에 여러 대의 서버를 띄우는 형식
- 컨테이너 하나를 장기간에 걸쳐 사용할 경우 큰 장점을 느끼기 어렵다.
- 컨테이너 여러 개 사용하는 형태를 가정하기 때문