도커의 동작원리
컨테이너 내부
⇒ 리눅스 OS비슷한 무언가 들어있음(커널이 아닌 주변부)
OS의 역할
사람이 내린 명령을 하드웨어가 알아먹을 수 있는 언어로 번역하여 전달함
OS의 구조
커널부+ 주변부 로 구성
- 하드웨어 ↔ 커널 ↔ 주변부분 ↔ 소프트웨어
- 하드웨어 ↔ 커널 ↔ 도커 엔진 ↔ 주변부분 ↔ 소프트웨어
도커 엔진이 주변 부분의 프로그램 명령을 전달받아서 커널에 전달하는 구조
컨테이너에 리눅스 커널 외의 주변 부가 들어 있기 때문에, 도커는 기본적으로 리눅스 운영체제에서만 동작함
⇒ Window, mac용 SW가 안돌아감
아니 그러면 윈도우는 못써요?
virtual Box나 VM Ware같은 가상환경에 리눅스 환경울 설치하고 도커실행 or 윈도우용 도커 데스크톱처럼 필요한 리눅스 운영체제를 포함하는 패키지를 설치해 사용할 수 있다!
도커 허브와 이미지, 컨테이너
이미지 (빵틀.)
컨테이너를 만드는 데 사용하며, 이미지를 그자체로 사용하는 일은 전혀 없음
반대로 컨테이너에서 이미지를 만들어내는 것도 가능함. 수정후 이미지화 하여 배포하는 형태.
도커 허브
컨테이너의 이미지를 다운받을 수 있음
Docker Hub Container Image Library | App Containerization
이미지 종류
- 운영체제 주변부
- 1 + 소프트웨어
- 1 + 소프트웨어 다수
⇒ 소프트웨어도 버전별로 제공
도커 컨테이너의 생애주기와 데이터 저장
컨테이너는 일회용품에 가까움
업데이트보다는 버리고 새로 만들기!
컨테이너의 생애주기
- 만들기
- 실행하기
- 종료하기
- 폐기
데이터는 어떡해?
도커가 설치된 물리적 호스트의 디스크를 마운트해서 데이터를 저장함
도커의 장단점
장점
환경의 격리
- 독립된 환경 ⇒ 여러 개를 띄울 수 있다!
- 이미지 만들기 ⇒ 배포 가능
- 컨테이너에 커널 필요없음 ⇒ **가볍다!**
여러대의 서버
하나의 물리 서버(호스트)에 여러 서버를 띄우기 가능함!
그것도 충돌없이!
가상화 기술보다 가볍다 매우!
서버관리 용이
각 소프트웨어가 독립적으로 관리되어 업데이트가 쉬우며, 항상 최신 상태로 sw유지가 쉽다.
서버 고수가 아니어도돼!
명령 한 줄로 서버 구축이 끝남
단점
리눅스 리눅스 리눅스…
리눅스용 SW만 지원한다.
단일 호스트
물리 호스트에 문제가 생기면 다 부러진다.
컨테이너를 하나만 쓰면…
별로 좋은지 느끼기 어렵고, 도커엔진이 오버헤드가 됨