AngelPlayer`s Diary

도커(Docker)란?

리눅스 컨테이너를 기반으로 하여 특정 서비스를 패키징하고 배포하는 오픈소스 프로그램

서버에 설치되는 무엇이든 아우르며, 실행환경에 상관없이 동일하게 실행될 것을 보증함

-> 특정한 소프트웨어를 개발한 후 배포하고자 할 때 유용한 배포 도구

 

도커는 컨테이너 개념을 활용 - 컨테이너에 이미지를 담아 구동시키는 방식

Docker File -> Docker Image -> Docker Container

 

 

 

리눅스 컨테이너(LXC)란?

리눅스상에서 여러개의 격리된 리눅스 시스템을 동작시키는 운영체제단의 가상화 기술

리눅스 커널단에 컨테이너를 올리는 방식으로 동작

 

 

 

Docker vs Virtual Machines

- 가상머신 : 가상화(Hyper-V)를 이용하여 Host OS와 별개인 Guest OS를 생성

-> Guest와 Host가 서로 의존적이지 않음

-> 속도가 다소 느림, 용량이 큼

 

- 도커 (컨테이너) : 도커 엔진을 이용함

-> 성능적으로 개선, 메모리 용량도 적게 차지, 파일 크기가 작음

-> OS와 도커 컨테이너간 의존성이 존재

 

 

 

도커의 개발 패러다임

서버를 구축 후 업데이트가 필요한 경우 새로운 컨테이너를 생성하여 기존 컨테이너를 삭제하고 교체하는 작업을 수행 (Immutable)

도커로 돌아가는 소프트웨어 자체는 어떠한 데이터도 가지고 있으면 안되고, 임시파일 정도만 가진 상태에서 외부 스토리지에 데이터를 저장하는 형태로 개발 -> Micro Service의 특징과 유사

 

 

 

 

 

 

 

 

 

- 참고 문헌 -

https://www.weave.works/blog/a-practical-guide-to-choosing-between-docker-containers-and-vms

https://ndb796.tistory.com/90

공유하기

facebook twitter kakaoTalk kakaostory naver band