이번 포스팅을 시작으로 그동안 개인적으로 정리해왔던 Docker Container에 대하여 정리해 보고자 합니다.
본 포스팅은 필자의 실무에 있어 Docker의 사용이 필요하여 공부하였던 내용 위주로 작성하였으며
문의사항이 있을 시 댓글에 남겨주시면 최대한 정확하고 자세하게 답변해드리겠습니다.
Docker 란?
2013년 3월 Docker Inc. 에서 출시한 오픈소스 컨테이너 프로젝트
Immutable infrastructure의 개념 (참고URL: http://www.tutorialbook.co.kr/142)
한번 설정한 운영환경은 절대 변하지 않음.
호스트OS와 서비스운영환경이 분리되어있음
클라우드에서 서버를 쓰고 버리는 것 처럼 운영환경 이미지도 필요할 때 마다 쓰고 버림.
장점
편리한 관리 및 확장
쉽게 사용할 수 있는 테스트환경
경량
Virtual Machine VS Docker
- 가상머신
- VM은 이미지 안에 OS가 포함되므로 용량이 크다
- Docker
- Guest 에 OS가 포함되어 있지 않음
- 설치시 서버 운영을 위한 프로그램과 라이f브러리만 격리하여 설치
- OS 자원은 Host와 공유
- 하드웨어 가상화 계층이 없기 때문에 메모리접근, 파일시스템, 네트워크속도가 VM보다 훨씬 빠름
- Native와 Docker의 성능 차이가 거의 없음
Linux Container (참고URL: https://ko.wikipedia.org/wiki/LXC )
- 리눅스에서는 chroot가 있어 이를 통해 특정 디렉토리를 루트로 설정하면 Jail환경이 생긴다.
해당 Jail마다 실행파일과 공유 라이브러리를 준비해야 되는데 복잡하여 LinuX Container(LXC)라는 것이 생겼다. - LXC는 리눅스 커널레벨에서 제공하는 일종의 격리공간 (OS까 없으니 가상머신이 아닌 컨테이너라고 한다)
- 리눅스 커널의 ControlGroup(cgroup)은 cpu,메모리,디스크,네트워크자원을 할당하여 완전한 가상 공간을 제공한다
- LXC는 cgroup의 기능과 namespace의 기능을 활용하여 격리된 가상 공간만을 제공한다
- Docker은 이 LXC에 이미지생성관리 등의 부가기능을 더한 것이다.
Docker 이미지,컨테이너 개념
이미지 : 필요한 프로그램과 라이브러리, 소스등을 설치한 뒤 파일 하나로 만든 것 (UbuntuBase+Java+GDI)
컨테이너: 이미지를 실행한 상태 (운영체제로 보면 이미지=실행파일, 컨테이너=프로세스)
Docker: 실행파일 또는 스크립트를 위한 실행 환경
리눅스는 파일 실행에 필요한 구성요소가 잘게 쪼개져있어 시스템 구조가 단순해지는 장점이있지만 의존성이복잡함
그래서 deb.rpm이 있지만 서버를 추가할떄마다 패키지를 설치하는 일은 귀찮다.
'IT > Docker' 카테고리의 다른 글
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-3.명령어 (container 2) (0) | 2018.07.14 |
---|---|
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-2.명령어 (image 2) (0) | 2018.07.12 |
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-1.명령어 (Container) (0) | 2018.07.10 |
Docker Container tutorial (도커 컨테이너 매뉴얼) 2.명령어 (image) (0) | 2018.07.10 |
Docker Container tutorial (도커 컨테이너 매뉴얼) 1. 설치 (0) | 2018.07.10 |
댓글