도커?
- 컨테이너 기반의 오픈소스 가상화 플랫폼
컨테이너를 사용해 응용 프로그램을 더 쉽게 개발, 배포, 실행할 수 있도록 설계된 도구
컨테이너(Container)
: 물건을 넣고 운송수단으로 옮기는 것과 같이 프로그램을 이동, 배포 및 관리해줌.
컨테이너 이미지(Container Image)
: 응용 프로그램을 실행하는데 필요한 모든 것(코드, 시스템도구, 라이브러리 설정 등)을 포함하는 실행가능한 소프트웨어 패키지.
- 클라이언트-서버(Client-Server) 모델을 구현한 애플리케이션
도커 엔진(Docker Engine)
- 컨테이너를 구축하고 실행하는 기본 핵심 소프트웨어
도커 탄생 배경
- 과거에는 하나의 서버에 하나의 애플리케이션이 동작(서버에서 여러 개의 애플리케이션을 실행시키는 기술 미비했기에) -> 새 애플리케이션 개발할 때마다 서버 구입 필요 OR 남는 서버 존재(안정적 but 비효율)
- 하이퍼바이저 등장: 다수의 게스트 OS를 구동할 수 있는 소프트웨어. 하드웨어를 가상화하면서 하드웨어와 각각의 vm을 모니터링. 하나의 운영체제 위에 여러 OS 실행시켜 하나의 vm마다 고유한 OS가 필요하며, CPU, RAM 등의 리소스 소비, 라이센스 이슈 등의 단점 존재
- 대형회사들은 컨테이너 기술을 사용하게 됨.
- 컨테이너 모델: 단일 호스트의 모든 컨테이너는 호스트의 OS를 공유함. 시스템 리소스 확보, 빠른 속도, 휴대성 등의 장점
도커 클라이언트(Docker Client)
- 사용자가 도커와 상호작용하는 기본방법, Docker CLI
docker run
클라이언트가 도커 데몬으로 보내 실행토록함.
도커 데몬(Docker Daemon, dockerd)
- 도커 호스트에서 실행되는 백그라운드 프로세스
- CLI에서 실행하는 명령어를 받아들이고, 도커 이미지를 다운로드, 컨테이너 실행 및 관리 등 도커 객체 관리
- 문제 발생시 도커 호스트에서 컨테이너 실행할 수 없음.
기타
- 도커 데몬으로 보내서 실행시키고 싶다면
docker run
_ex. docker run hello-world
-> 커맨드 입력시 클라이언트에서 도커 서버로 요청 보내짐
-> 서버는 hello-world가 로컬에 cache 되어있나 확인
-> 없을 경우 Docker Hub에 가서 이미지를 가져오고 로컬에 보관
-> 이후에는 해당 이미지를 이용해서 컨테이너 생성 및 실행
- 내가 설치한 도커는 어디에 있나?
which docker
ex. /usr/local/bin/docker
- 도커 버전에 대해서 알고 싶다면?
docker version