Docker에 대해 본격적으로 공부하기 전, 이론적 배경지식을 단단히 하기 위해 조사해보았다.
Docker의 개념
Docker는 애플리케이션을 컨테이너(Container)라는 가볍고 이식 가능한 환경에 패키징, 배포, 실행할 수 있는 오픈 소스 플랫폼이다. 컨테이너는 운영 체제(OS)의 가상화를 이용해 애플리케이션이 어디에서나 동일하게 실행될 수 있도록 환경을 격리한다.
Docker의 네 가지의 구성 요소
- 컨테이너(Container)
- 이미지(Image)
- 도커 엔진(Docker Engine)
- Docker Hub
컨테이너(Container)
이미지를 통해 만들어진 독립된 작업 환경.
컨테이너는 커널까진 OS와 공유한다. 가상 머신과 달리 OS를 완전히 새로 돌리는 것이 아니므로 상대적으로 가볍고 빠르다. 그래서 동일 커널을 사용하는 환경이라면 어떤 컴퓨터에서도 동작한다고 기대할 수 있다.
이미지(Image)
컨테이너에 필요한 정보를 저장하는 읽기 전용 템플릿.
컨테이너를 생성, 실행하기 위한 모든 필요한 정보가 담겨 있다. 컨테이너는 이 이미지를 통하여 생성된다. 컨테이너는 이미지의 복사본이라고 볼 수 있는 셈이다. 1
도커 엔진(Docker Engine)
Docker 컨테이너를 실행하고 관리하는 데 필요한 모든 작업을 처리하는 실행 환경.
Docker Daemon
Docker의 중앙 처리 장치.
사실상 도커 엔진 그 자체라고 볼 수 있다. Docker 이미지를 만들고, 컨테이너를 생성하고, 실행하며, 관리한다. 또한 레지스트리와 소통하며 업로드하고 다운로드하는 등 외부와 소통할 수 있다.
Docker API
Docker Daemon과 소통을 주고 받기 위한 API
Docker Daemon은 외부뿐만 아니라 로컬 환경의 Docker CLI와 소통할 때도 이걸 사용한다. 아마 확장성과 독립성을 확보하기 위함인 것 같다. 명령을 전달 받을 때, 전달할 때 둘 다 동일하게 Docker API를 사용한다.
Docker CLI
단순히 사용자가 Docker Daemon에 명령을 전달하는 명령창이다.
도커 허브(Docker Hub)
Docker의 Github
Github이 소스 코드와 파일을 저장했다면, Docker Hub은 Docker 이미지를 저장한다.
- 애플리케이션 코드, 라이브러리, 환경 설정 파일 등 [본문으로]