Docker 란?
컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼.
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있음
컨테이너 란?
개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술.
코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어 표준 단위.
컨테이너 이미지 란?
코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지.
* 도커 이미지를 이용해 컨테이너를 생성하며 도커 컨테이너를 이용하여 프로그램을 실행함.
기존 가상화 기술과 도커의 차이점
가상 머신
- 가상머신은 편하지만 성능이 좋지 못하다는 단점이 있다.
- 가상머신 자체는 완전한 컴퓨터이기 떄문에 항상 게스트 OS 를 설치해야한다.
- 이미지 안에 OS가 포함되기 떄문에 이미지 용량이 커진다.
Docker
- Docker는 반가상화보다 경량화된 방식
- 게스트 OS를 설치하지 않음
- Docker 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 설치 가능하고, OS는 호스트와 공유
- 이미지 용량이 크게 줄어듬.
공통점
- Docker 컨테이너와 가상 머신은 기본 하드웨어에서 격리된 환경 내에 어플리케이션을 배치하는 방법.
차이점
- 가상 머신과 비교했을 때, 컨테이너는 하이퍼바이저와 게스트 OS가 필요하지 않으므로 더 가벼움.
- 가장 큰 차이점은 격리된 환경을 얼마나 격리를 시키는지의 차이.
이미지로 컨테이너 만드는 순서
1. Docker 클라이언트에 docker run <이미지> 입력해줍니다.
2. 도커 이미지에 있는 스냅샷을 컨테이너 하드 디스크에 옮겨 줍니다.
3. 이미지에서 가지고 있는 명령어를 이용해서 이미지를 실행시켜줍니다.
Cgroup, namespace 를 쓸 수 있는 이유
컨테이너를 격리 시킬 수 있는 이유는 Linux 기능 중 Cgroup과 namespace 를 이용해서인데 Window에서 사용 할 수 있는 이유는 docker version을 입력하면 OS가 linux로 되어있다.
- Cgroup은 단일 또는 태스크 단위의 프로세스 그룹에 대한 자원 할당을 제어하는 커널 모듈
- namespace는 전역 리소스의 자체 격리 된 인스턴스가 있는 네임 스페이스 내의 프로세스에 표시 되도록하는 추상화에서 전역 시스템 리소스를 래핑합니다.
'docker' 카테고리의 다른 글
Docker + Elasticsearch, Kibana 구성 (cluster) (0) | 2022.07.12 |
---|---|
Docker + Elasticsearch, Kibana 구성 (single node) (0) | 2022.07.12 |
ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] (0) | 2022.07.12 |
WLS 설치 및 WSL 위에 Docker 설치 (0) | 2022.07.10 |
Docker #2 (0) | 2022.06.19 |