나의 개발 일상 기록
[Docker] Docker란? 본문
Docker
1. Docker란?
Docker란 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너기반의 오픈소스 가상화 플랫폼이며 생태계입니다.
Docker를 사용하는 이유는 어떠한 프로그램을 다운 받는 과정을 굉장히 간단하기 만들기 위해서 사용을 합니다.
2. 컨테이너란?
서버에서의 컨테이너의 개념이라고 한다면 컨테이너 안에 다양한 프로그램, 실행환겨을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 일반 컨테이너의 개념에서 물건을 손 쉽게 운송 해주는 것처럼 프로그램을 손쉽게 이동 배포 관리를 할수 있게 해줍니다. AWS, Azure, Google cloue등 어디에서든 실행 가능하게 해줍니다.
컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위입니다.
3. Docker 이미지와 Docker 컨테이너 정의
Docker이미지는 프로그램을 실행하는데 필요한 설정이나 종속성을 갖고 있으며 Docker 이미지를 이용해서 컨테이너를 생성하고 Docker 컨테이너를 이용하여 프로그램을 실행합니다.

컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지를 말합니다.
또한, 컨테이너 이미지는 런타임에 컨테이너가 되고 Docker 컨테이너의 경우 Docker 엔진에서 실행될 때 이미지가 컨테이너가 됩니다. 리눅스와 윈도우 기반 애플리케이션 모두에서 사용할 수 있는 컨테이너화된 소프트웨어는 인프라에 관계없이 항상 동일하게 실행됩니다. 컨테이너는 소프트웨어를 환경으로부터 격리시키고 개발과 스테이징의 차이에도 불구하고 균일하게 작동하도록 보장합니다.
4. Docker를 사용할때의 흐름 감잡기

Docker Client(CLI)에 커맨드를 입력 시 Docker Server(Daemon)가 그 커멘드를 받아서 그것에 따라 이미지를 생성하는 컨테이너를 실행하는 모든 작업을 하게 됩니다,
5. Docker의 구조와 기존 가상화 기술(VM)의 차이
Docker 컨테이너와 기존 가상화 기술(VM)의 공통점은 Docker 컨테이너와 가상 머신은 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하는 방법이며 차이점은 격리된 환경을 얼마나 격리시키는지의 차이라고 할수 있습니다.

VM과 비교했을 때 컨테이너는 하이퍼바이저와 게스트 OS가 필요하지 않으므로 더 가볍습니다.
애플리케이션을 실행할 때는 컨테이너 방식에서는 호스트 OS위에 애플리케이션의 실행 패키지인 이미지를 배포하기만 하면 되는데 VM은 애플리케이션을 실행 하기 위해서 VM을 띄우고 자원을 할당한 다음, 게스트 OS를 부팅하여 애플리케이션을 실행 해야 해서 훨씬 복잡하고 무겁게 실행을 해야 합니다.
Docker 컨테이너에서 돌아가는 애플리케이션은 컨테이너가 제공하는 격리 기능 내부에 샌드박스가 있지만, 여전히 같은 호스트의 다른 컨테이너와 동일한 커널을 공유합니다. 결과적으로, 컨테이너 내부에서 실행되는 프로세스는 호스트 시스템에서 볼 수 있습니다.
'Docker' 카테고리의 다른 글
| [Docker] Docker를 이용한 간단한 Node.js 어플 만들기_1 (0) | 2021.07.08 |
|---|---|
| [Docker] Docker Image 생성 (0) | 2021.05.17 |
| [Docker] Docker를 이용한 Redis 설치 (0) | 2021.05.17 |
| [Docker] Docker 생명주기 (0) | 2021.05.13 |
| [Docker] Window10 Docker Install (0) | 2021.05.13 |