Actions
Docker¶
- 컨테이너 기반의 오픈소스 가상화 플랫폼
- 도커는 LXC기반으로 시작하여 0.9 version에서는 자체 libcontainer기술을 사용하였고, 추후 runC기술에 합쳐졌다.
1) 컨테이너의 정의¶
- 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행관경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다.
2) 가상머신과 컨테이너의 유사점¶
- 호스트 운영체제에서 구동되며 그 바탕이 되는 하드웨어에 가상으로 액세스하는 Linux, Windows 등의 게스트 운영체제를 의미
- 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해 줌
3) Container 기반 가상화 vs Hypervisor 기반 가상화¶
| Hypervisor | Container | |
|---|---|---|
| 호스트 운영체제와 격리 | 완전 격리 | 부분 격리 |
| 필요한 리소스 | 커널, CPU, 메모리, 스토리지 등 | 앱에 필요한 서비스만 포함 |
| 게스트 호환성 | 가상 머신내의 운영체제 | 호스트와 동일한 운영체제 |
| 배포 | VM배포 | Container배포 |
4) Docker의 구조¶
| Client | Docker Host | Registry | ||
|---|---|---|---|---|
| Docker Build | Docker daemon | NGINX 등 | ||
| Docker Pull | Images | |||
| Docker Run | Containers |
- Client : user가 'docker run'등의 명령어를 입력하면 이를 Server쪽에 전송하고, Docker daemon이 수행한다.
- Docker daemon : docker api 요청을 수신하고 image, container, network, volume과 같은 docker object를 관리한다. 다른 docker daemon과의 통신을 통해 서비스를 관리할 수 있다.
- Docker Registry : Docker 이미지 저장소이다.
- Image : 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있다. 공식 이미지의 경우 해당 이미지를 실행하기 위한 모든 것이 세팅되어 있다.
5) Docker의 특징¶
- 레이어 저장방식
- Docker Image는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 용량이 크다. 이런 문제를 해결하기 귀해서 Layer라는 개념을 사용하고 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해준다.
- 컨테이너를 생성할 때도 레이어 방식을 사용하여 기존의 이미지 레이어 위에 읽기/쓰기(read-write) 레이어를 추가한다.
- Dockerfile
- Docker는 image를 만들기 위해 Dockerfile이라는 파일에 자체 DSL 언어를 이용하여 이미지 생성 과정을 적는다.
- Application 실행에 필요한 과정들을 Dockerfile로 작성하여 관리할 수 있으며, 해당 Dockerfile을 보면서 이미지 생성과정을 알 수 있으므로 수정하기도 용이하다.
- Docker Hub
- Docker hub를 통해 공개 이미지를 무료로 관리해준다. 공식 이미지를 직접 관리해주며, namespace가 없다.
이태훈이(가) 3년 이상 전에 변경 · 1 revisions