Docker
- 오픈 플랫폼
- 어플리케이션을 인프라에서 분리해주고, 신속함
- 인프라를 어플리케이션을 관리하는 것처럼 관리할 수 있음
- 코드 배포에 용의
- 컨테이너 기반 가상화 도구 (리눅스 컨테이너 기술인 LXC(Linux Containers) 기반)
- 애플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술
컨테이너(Container)
- 컨테이너는 가상화 기술 중 하나
- 호스트 운영체제 위에 여러개의 격리된 환경을 생성
- 각각의 컨테이너 안에서 애플리케이션을 실행
가상화(Virtualization) 기술
- 하나의 물리적인 컴퓨터 자원(CPU, 메모리, 저장장치 등)을 가상적으로 분할하여 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술
- 이를 통해 물리적인 컴퓨터 자원을 더욱 효율적으로 사용할 수 있으며, 서버나 애플리케이션 등을 운영하는데 있어 유연성과 안정성을 제공
- VM(가상머신)은 하드웨어 Infastructure 위에 Vmware나 VirtualBox와 같은 하이퍼바이저 소프트웨어를 이용해서 각각의 가상의 머신을 만들 수 있음
- 한 운영체제 위에서 동일한 어플리케이션을 각각의 고립된 다른 환경에서 구동하기위해서는 VM을 이용해서 어플리케이션을 구동했어야만 했음
- VM은 각각의 운영체제를 포함하고 있기 때문에 Mac OS위에서 VM을 이용하면 윈도우와 리눅스를 동시에 구동할 수 있음
Container vs VM
VM은 운영체제를 포함했다면 컨테이너는 운영체제를 포함하지 않고, 컨테이너 엔진이 설치된 HOST OS를 공유함
컨테이너가 구동되기 위해서는 컨테이너 엔진이라는 것이 필요하고 HOST OS에 접근해서 필요한것들을 처리해줌
컨테이너 엔진 중에 가장 많이 사용되는 것이 바로 Docker!
하이퍼바이저 (Hypervisor)
- 가상머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어
- OS에 자원을 할당 및 조율
- OS들의 요청을 번역하여 하드웨어에 전달
Guest OS
- 하이퍼바이저를 설치하는 실제 운영체제(윈도, OS X, 리눅스 등)를 호스트(Host) OS 라 하고 하이퍼바이저 위에 만든 가상 머신에 설치된 운영체제를 게스트 OS라고 부름
Docker Architecture
• 도커 데몬(Docker daemon = dockerd)
- 도커 엔진의 핵심 구성 요소
- 도커 호스트에서 컨테이너를 관리하고 실행하는 역할
- 컨테이너를 생성, 시작, 중지, 삭제하는 등의 작업을 수행
- 컨테이너 이미지를 관리하고 외부에서 이미지를 다운로드하고 빌드하는 작업을 수행
• 도커 클라이언트 (Docker Client)
- Docker와 상호 작용
- docker 명령어를 사용하면 Docker daemon으로 보내어 실행
• 도커 이미지 (Docker Image)
• 도커 오브젝트 (Docker Object)
- 도커 컨테이너를 만들기 위한 읽기 전용 템플릿
• 도커 컨테이너 (Docker Container)
- 한 도커 이미지의 실행 가능한 인스턴스
- 애플리케이션을 실행하기 위한 모든 파일과 설정 정보를 포함하는 패키지
• 도커 레지스트리 (Docker Registries)
- 도커 이미지(Docker Image)를 관리하고 저장하는 곳
• Docker Hub : 디폴트 레지스트리, 누구나 접근 가능한 공개형 저장소
* 참고
- 원티드(프리온보딩 백엔드 챌린지 4월) - Docker: 나만의 도커 이미지 만들기부터, 클라우드 배포까지! - Github
'Docker' 카테고리의 다른 글
[Docker] 나만의 도커파일 & 이미지 생성(EC2 환경) (0) | 2023.04.15 |
---|---|
[Docker] 도커를 활용하는 클라우드 서비스 (0) | 2023.04.13 |
[Docker] Docker Compose & 실습 (2) | 2023.04.11 |
[Docker] Docker에 대한 이해 및 실습 - httpd (0) | 2023.04.11 |
[Docker] Docker 설치 방법, Docker CLI 정리 (0) | 2023.04.10 |
댓글