1. Docker란?
- 컨테이너(Container)를 생성하고 관리하기 위한 도구.
- docker가 살행되는 모든 곳에서 Container를 가져올 수 있다.
2. Container란?
- 독립적이고 표준화된 소프트웨어 유닛
- 코드와 그 코드를 실행하기 위한 종속성들(dependencies)이 들어있는 패키지이다.
- 누가 어디에서 Container를 실행하든 관계없이 동일한 application에 대하여 동일한 실행결과를 얻을 수 있게 해준다.
3. 어떤 때 Container를 사용할까?
- 개발 환경과 배포 환경이 다를 경우
- 가령 배포 환경의 버전이 낮으면 개발한 서비스의 정상 동작이 이루어지지 않을 수 있는데, Container의 특성 덕분에 별도의 조치 없이도 동일하게 실행할 수 있다.
- 팀 또는 회사 멤버들 간에 개발 환경이 다를 경우
- 멤버들 각각의 로컬 환경이 어떠하든 관계없이, 해당 프로젝트에 한해서는 동일한 환경을 가질 수 있다.
- 프로젝트 간에 사용하는 tool이나 tool의 버전이 서로 다를 경우
- 각 프로젝트에서 사용하는 tool 간의 충돌 또는 tool 버전 간의 충돌이 일어날 수 있다.
- 따라서 프로젝트 전환 시 해당 tool을 삭제하고 재설치하는 번거로움이 있을 수 있는데, Container를 사용하면 그러한 번거로움을 없앨 수 있다.
4. Virtual Machine vs. Docker
가상머신 구조 | docker 구조 |
이미지 출처 : acade mind |
- 가상머신 역시 독립적인 환경을 갖출 수 있으므로 라이브러리, 종속성, 각종 도구들을 프로젝트에 맞게 구성하고, 공유할 수 있다.
- 그러나 host 컴퓨터의 자원을 공유하므로 가상 머신이 많아질수록 속도가 느려지며, 각 가상머신은 개별 OS를 가지고 있으므로 공간 낭비 역시 심하다.
- 또한 각 가상 머신은 결국 별도의 컴퓨터이므로 하나 하나 설정을 다시 해야하기 때문에, 동일한 환경 구축 과정이 까다로울 수 있다.
- 반면 container는 개별적으로 OS를 가지고 있지 않으며, host 컴퓨터의 OS에 맞게 빌드된 환경에서 docker engine 기반으로 실행되므로, 훨씬 가볍고 공간 낭비가 없다.
- 전체 컴퓨터 단위가 아니라 app과 그걸 위한 환경 단위로 캡슐화하므로 공유, re-building, 배포가 더 쉽다.
'DevOps > Docker' 카테고리의 다른 글
Docker hub에 내 이미지 공유하기 (0) | 2023.12.01 |
---|---|
[Docker] Docker Images 간단 정리(feat. Docker Container) (0) | 2023.11.29 |
댓글