HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
🐳
Docker Container
🐳

Docker Container

progress
Done
Tags
DevOps
SummaryWhatWhyHow REFER

Summary


  • 도커는 컨테이너를 위한 운영체제이다.
  • 기존 하드웨어를 가상화하는 방식과는 달리 서버 운영체제를 가상화한다.
  • namespace(격리), cgroup(자원 분할 할당), union fsys(레이어드 최적화) 특징을 갖는다.

What


Container란
  • 애플리케이션의 코드와 모든 의존성을 패키징하는 소프트웨어 표준 단위이다.
notion image
  • 컨테이너는 애플리케이션에서 필요한 모든 것을 담고 있다.
  • 각 컨테이너들은 서로 격리되어 있다.
    • 컨테이너로 패키징된 애플리케이션은 하나의 호스트 위에서 독집적으로 실행된다.
 
Docker의 컨테이너의 특징
  1. Linux NameSpace - 프로세스에게 격리된 OS VIEW를 제공하는 커널 기술
      • 프로세스 생성 시점에 어떤 네임스페이스를 사용할 지 선택할 수 있고, 프로세스는 선택한 네임스페이스 별로 격리된다.
      notion image
      • NameSpace 없이는 모든 프로세스가 동일한 Network Resource를 사용하게 된다.
      • 같은 eth0이더라도 서로 다른 네트워크 리소스를 사용한다.
  1. Cgroup - 프로세스에게 하드웨어 리소스를 그룹으로 묶어서 할당하는 기술
    1. notion image
      • cgroup은 리소스 타입 별로 독립적인 트리 구조를 가진다.
      • cgroup 노드는 하위에 서브 노드를 가질 수 있으며 Leaf-Node는 프로세스가 된다.
      notion image
  1. 유니온 파일 시스템 - 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해줌 (획기적 IDEA)
      • 처음 이미지를 다운받을 때는 부담이 없지만 기존 이미지에 파일을 추가해서 수백메가를 다시 다운받으면 매우 비효율적일 것 이다.
      • 도커는 이런 문제를 해결하기 위해 레이어라는 개념을 사용하고 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일 시스템으로 사용할 수 있게 해준다.
       
이미지란
  • 컨테이너를 만들기 위한 파일이다.
  • 이미지로 컨테이너를 생성하기 때문에 컨테이너를 이미지 인스턴스라 한다.
  • 효율적인 이유의 예시
    • 이미지는 여러개의 읽기 전용read only 레이어로 구성되고 파일이 추가되거나 수정되면 새로운 레이어가 생성됩니다. ubuntu 이미지가 A+ B + C의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지는 A + B + C + nginx가 됩니다. webapp 이미지를 nginx 이미지 기반으로 만들었다면 예상대로 A + B + C + nginx + source 레이어로 구성됩니다. webapp 소스를 수정하면 A,B,C, Nginx 레이어를 제외한 새로운 source(v2) 레이어만 다운받으면 되기 때문에 굉장히 효율적으로 이미지를 관리할 수 있습니다. 
      notion image
    • Union File System을 사용하면 여러 컨테이너가 하나의 이미지를 사용할 경우 각각의 컨테이너는 자신이 Overwrite할 영역만을 유지할 수 있다.
      • notion image

Why


  • 서비스의 배포 단위로 컨테이너 이미지를 만들어 사용할 수 있다.(CI, CD)
    • Immutable 하게 배포하여 배포, 롤백을 쉽게 할 수 있다.
  • 컨테이너의 관리와 애플리케이션 관리를 분리할 수 있다.
    • 컨테이너 클러스터 관리와 애플리케이션 배포가 구분된다.
  • 하이퍼 바이저 보다 리소스를 효율적으로 사용할 수 있다.
  • MSA에 적합하다.
  • 도커를 사용하기 전과 후의 차이
notion image

How


 REFER


초보를 위한 도커 안내서 - 도커란 무엇인가?
어느날 친구한테 메시지를 받았습니다. 도커 공부 좀 하려는데 hello world 문서 어떤 거 보면서 시작하는 게 좋음? 구글에서 docker 검색ㄱㄱ라고 말하려다 인터넷에 있는 도커 관련 글과 동영상 중에 입문자용 링크를 몇 개 전달해 주었습니다. 이후에도 몇 번 비슷한 요청을 받으면서 도커에 대해 가볍게 정리해보자라는 생각이 들었고 예전 글(도커를 이용한 웹서비스 무중단 배포하기) 과 밋업 때 발표했던 내용, 그리고 그동안의 사용경험을 모아 글을 작성하게 되었습니다.
초보를 위한 도커 안내서 - 도커란 무엇인가?
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
초보를 위한 도커 안내서 - 도커란 무엇인가?