Docker는 신(?)이다.
Docker에 대한 정보는 찾아 보기 쉽기 때문에,
나는 내가 느꼈던 경험, 알아서 좋았던 것 에 집중해서 정리해 보겠다!
간단하게, 여러 명령어들을 완벽히 추상화 한 것!
→ 기존에 없던 것이 아니다!
커널을 공유, 리소스를 격리 해주는 것!
격리(CPU, Memory, Disk, Process, Network ..) → Namespace로 분리
복잡한 것을 감추는 것 (Encapsulation)
필요한 기능만 오픈 하는 것 (Interfacing)
인터페이스를 표준화 할 것 (ISO, IEEE …)
추상화 수준 : vm → container → K8s → Service Mesh
하드웨어 추상화 → 서비스 추상화 → 서비스 인프라 추상화
vmware → docker → K8s
Linux는 많이 쓴다! / 다양하다! / 커널을 공유 한다!
RedHat / Ubuntu / Debian / Kali / CentOS / Suse ...
→ 같은 커널을 사용해 컨테이너로 띄우기 가능!
너무 하고 싶은 말이 많다.. 표현이 어려워..
서비스를 오랫동안 운영하기 위해 필요하다!
→ 일관성! 동일성!
자동화를 위한 추상화
(복잡한 것 (하드웨어, OS) → 핵심적인 것으로 간추림!)
독립된 환경 → 서비스 간 격리
Layer들의 합!
→ image는 layer(각 명령어)들의 합 (read only)
host = linux (항상)
image는 os에 영향을 받지 않고 다른 환경에서도 모두 같은 결과
image는 cache를 사용 (빌드 시간 단축)
apt-get update 같은 명령어는 —no-cache 필요
layer 1에서 cache를 사용 X ⇒ layer 2부터는 cache 사용 X
변경 많음 ⇒ 아래쪽으로 (상위 layer) (EX. ENV는 위쪽)
RUN = build (ex, apt-get update, 패키지 설치 ..)
RUN & ENTRYPOINT & CMD 의 차이 → 나중에 설명 하겠.. (중요!)
격리 & 추상화 !
여기서 감동(울컥) 받아야 하는데..