도커(0)

NOHHYEONGJUN·2024년 9월 5일

도커

목록 보기
1/11

Docker

Docker는 신(?)이다.
Docker에 대한 정보는 찾아 보기 쉽기 때문에,
나는 내가 느꼈던 경험, 알아서 좋았던 것 에 집중해서 정리해 보겠다!


Container = 서비스의 추상화!

간단하게, 여러 명령어들을 완벽히 추상화 한 것!
→ 기존에 없던 것이 아니다!

커널을 공유, 리소스를 격리 해주는 것!
격리(CPU, Memory, Disk, Process, Network ..) → Namespace로 분리

 

 

추상화?

복잡한 것을 감추는 것 (Encapsulation)
필요한 기능만 오픈 하는 것 (Interfacing)
인터페이스를 표준화 할 것 (ISO, IEEE …)

추상화 수준 : vm → container → K8s → Service Mesh

하드웨어 추상화 → 서비스 추상화 → 서비스 인프라 추상화
      vmware      →      docker      →            K8s

 

 

왜 Linux?

Linux는 많이 쓴다! / 다양하다! / 커널을 공유 한다!

 

커널을 공유?

RedHat / Ubuntu / Debian / Kali / CentOS / Suse ...
같은 커널을 사용해 컨테이너로 띄우기 가능!


 

 


그래서 왜 Docker를 써야 하는가?

너무 하고 싶은 말이 많다.. 표현이 어려워..

1. 지속 가능성

서비스를 오랫동안 운영하기 위해 필요하다!
일관성! 동일성!

 

2. 자동화

자동화를 위한 추상화
(복잡한 것 (하드웨어, OS) → 핵심적인 것으로 간추림!)

 

3. 격리

독립된 환경 → 서비스 간 격리


 

 


Image?

Layer들의 합!
→ image는 layer(각 명령어)들의 합 (read only)

  1. host = linux (항상)

  2. image는 os에 영향을 받지 않고 다른 환경에서도 모두 같은 결과

  3. image는 cache를 사용 (빌드 시간 단축)

  4. apt-get update 같은 명령어는 —no-cache 필요

  5. layer 1에서 cache를 사용 X ⇒ layer 2부터는 cache 사용 X

  6. 변경 많음 ⇒ 아래쪽으로 (상위 layer) (EX. ENV는 위쪽)

  7. RUN = build (ex, apt-get update, 패키지 설치 ..)

  8. RUN & ENTRYPOINT & CMD 의 차이 → 나중에 설명 하겠.. (중요!)


 

 


결론

격리 & 추상화 !

여기서 감동(울컥) 받아야 하는데..

profile
Cloud/DevOps & Network Virtualization에 관심 있는 대학생입니다. 🐳

0개의 댓글