도커란?
- 컨테이너를 통해 응용프로그램을 더 쉽게 만들고, 배포할 수 있도록 설계된 도구
- 컨테이너 기반의 가상화 플랫폼
컨테이너란?
- 다양한 프로그램, 실행 환경을 컨테이너로 추상화하여 동일한 인터페이스로 통일
- AWS, Azure, Google colud 등에서 어디서든 실행 가능하게 함
도커 이미지란?
- 코드, 런타임, 시스템 도구 등 응용 프로그램을 실행하는 데 필요한 모든 것을 포함한 가볍고 독립적인 소프트웨어 패키지
- 도커 이미지는 런타임에 컨테이너가 되고, 도커 컨테이너의 경우 도커 엔진이 실행될 때 이미지가 컨테이너가 된다
- 컨테이너는 소프트웨어를 환경으로부터 격리시켜 개발과 스테이징 차이없이 균일하게 작동하도록 보장
도커 플로우
- CLI 입력
docker run hellow-world
를 도커 클라이언트에 입력했다고 하자.
그러면 도커 서버로 전송이 되고 'hello-world'라는 이미지가 캐시 저장소에 있는지 찾게 된다.
- 도커 허브
이미지가 없다면 도커 허브에서 이미지를 가져온다. 그후 도커 서버에서 이미지를 통해 프로그램을 실행하게 된다.
도커와 VM
- 하이퍼 바이저 기반의 가상화
- VM이라는 독립적 가상 환경의 서버 이용 가능
- 하이퍼 바이저는 호스트 시스템에서 다수의 게이트 OS를 구동할 수 있게 하는 소프트웨어
- 네이티브 하이퍼 바이저와 호스트형 하이퍼 바이저로 나뉨
- VM은 독립된 가상 하드웨어 자원을 할당 받음
- 도커
- VM과 공통점으로는 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하는 방법
- 차이점으로는 격리된 환경을 얼마나 격리시키는지 차이
도커 컨테이너를 격리할 수 있는 이유
- C Group
- CPU, 메모리, Network Bandwith 등 프로세스 그룹위 시스템 리소스 사용량을 관리 -> 어떤 어플이 사용량이 너무 많으면 그 어플을 C Group에 넣어 CPU, 메모리 사용 제한
- 네임스페이스
- 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술
이미지
- 이미지는 명령어와 실행 파일의 스냅샷을 가짐
- 실행 명령을 입력하면 컨테이너의 하드디스크에 스냅샷을 넣어줌
- 명령어로 컨테이너에 넣어줌 -> 컨테이너가 실행되면 명령어가 실행됨
- 도커 서버와 환경은 리눅스 환경임
** 따라하며-배우는-도커-ci 수강 중