개요
✔ 도커(Docker)
는 리눅스 컨테이너에 리눅스 어플리케이션을 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트
✔ 컨테이너 기술을 기반으로 한 가상화 플랫폼의 일종으로써 컨테이너가 실행되는 os의 기능을 그대로 사용하면서 독립된 환경을 만들어 사용함
가상화 플랫폼
Virtual Machine vs. Docker
가상머신(Virtual Machine)
은 하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식- 가상 운영체제는 완전히 독립된 공간과 시스템 자원을 할당받아 사용하며 대표적으로 VirtualBox, VMware 등이 있음
도커(Docker)
는 가상화된 공간을 생성할 때 리눅스 자체 기능(리눅스 라이브러리 등)을 사용하여 프로세스 단위의 격리 환경을 만드므로 성능 손실이 없음- 가상머신과 달리 커널을 공유해서 사용하여 컨테이너에는 라이브러리 및 실행파일만 있으므로 배포 용량이 작음
도커의 구성요소
Docker Client
: 도커를 실행하는 주체Docker Host
: 도커가 띄워져있는 서버. 컨테이너와 이미지를 관리함Docker daemon
: 도커 엔진Registry
: 외부(remote) 이미지 저장소
도커 이미지와 도커 컨테이너
도커 엔진에서 사용하는 기본 단위는 이미지
와 컨테이너
Docker File -> Docker Image
: 도커 이미지를 만들때 사용하는 Docker File을 이용하여 docker build
명령어를 통해 빌드.
Docker Image -> Docker Container
: Docker Image 를 docker run
명령어를 통해 Docker Container를 실행함
도커 이미지
- 도커 이미지(Docker Image) 는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 유사한 개념.
- 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용되며 여러 계층으로 된 바이너리 파일로 존재함
- 도커 이미지의 이름은 기본적으로 아래의 형태로 구성됨
[저장소 이름]/[이미지 이름]:[태그]
저장소 이름
: 이미지가 저장된 장소. 명시되지 않은 이미지는 도커 허브의 공식 이미지를 뜻함.이미지 이름
: 해당 이미지의 이름으로 역할의 의미를 담고있어야함.태그
: 이미지의 버전을 나타냄. 생략 시 latest로 인식.
도커 컨테이너
- 도커 컨테이너(Docker Container) 는 도커 이미지로 생성할 수 있으며, 컨테이너가 생성되면 호스트 및 다른 컨테이너로부터 격리된 시스템 및 네트워크를 사용할 수 있는 독립된 공간이 생성됨
- 컨테이너는 이미지를 읽기전용으로 사용하되 이미지에서 변경된 사항만 컨테이너 레이어에 저장하므로 컨테이너에서 무엇을 하든지 원래 이미지는 영향을 받지 않는다. ex) 같은 도커 이미지로 A, B 두 개의 컨테이너를 생성한 뒤 A 컨테이너를 수정해도 B 에는 영향을 주지 않는다.
참고
Next: (Docker) 2. Docker 설치
의문점
- Q1: 도커는 리눅스의 라이브러리 등 자원을 공유하는 리눅스 기반의 어플리케이션이라는데, 윈도우 기반의 Docker Desktop은 어떻게 작동하는 것인가?
- A1: Windows 에서 작동하는 Docker Desktop은 Windows의 WSL2를 이용하거나 Hyper-V 기반 리눅스를 베이스로함