-
[Docker] Section 1DevOps/Docker 2023. 12. 10. 22:57
Docker란?
도커는 컨테이너 기술
Container란?
소프트웨어 개발에서 컨테이너는 표준화된 소프트웨어 유닛
우리는 소프트웨어 유닛, 코드가 포함된 패키지 및 코드를 실행하는 종속성을 보관할 수 있으며 도커가 실행되는 모든 곳에서 이를 가져올 수 있다.
-> 동일한 환경에서 정확히 동일한 애플리케이션을 실행할 수 있다.
도커는 이러한 컨테이너를 구축하기 위한 도구일 뿐이다.
Container가 필요한 이유
1. 다른 개발, 생산 환경
2. 팀, 회사에서 다른 개발 환경
3. 다른 프로젝트들 사이의 충돌하는 도구, 버전
Virtual Machines / Virtual Operating Systems
문제점
가상 운영 체제를 가진 여러 virtual machine에서 발생하는 오버헤드
-> 매번 새로운 컴퓨터를 머신 내부에 설치해야 하고 메모리, CPU, 하드 드라이브의 공간을 낭비하게 된다.
장점으로
- 분리된 환경을 생성할 수 있고
- 그 안에 환경별 구성을 가질 수 있으며
- 모든 것을 안정적으로 공유하고 재생산할 수 있지만
단점으로
- 중복 복제, 즉 낭비되는 공간이 발생하게 된다.
- 호스트 시스템 위에 추가 시스템이 실행되고 있기 때문에 성능이 나빠질 수 있으며 특히 이러한 시스템이 여러 개 있는 경우 실제로 그 성능은 저하되게 된다.
- 또한, 재생산 및 공유가 가능하더라도 원하는 모든 시스템에 그 버츄얼 머신을 설정해야 하고 정확히 동일한 방식으로 구성해야 하기 때문에 까다로울 수 있다.
-> 이것이 우리가 도커와 컨테이너를 사용하는 이유!!!
virtual machine에 비해 container가 가지고 있는 장점
- 운영 체제와 시스템에 미치는 영향이 적다.
- 그리고 매우 빠르다.
- 이미지와 구성 파일이 있기 때문에 공유, 재구축 및 배포하는 것이 매우 쉽다.
- 여전히 앱에 필요한 모든 것을 캡슐화한 앱과 환경을 보유하지만 쓸데없는 부가적인 것이 없다.