오늘 뭐했냐/개발에 대한 주저리

23.09.09 도커(Docker)

스스로에게 2023. 9. 13. 13:46

도커

 컨테이너 기반의 오픈 소스 가상화 플랫폼이다. 여기서 "컨테이너"란 애플리케이션과 그에 필요한 라이브러리, 의존성 등을 하나의 패키지로 묶는 기술이다.

 

작동 원리와 방식

  1.  이미지와 컨테이너
    -이미지(Image): 응용 프로그램과 그 의존성을 패키징 한 것.
    -컨테이너(Container): 이미지를 실행한 인스턴스.
  2. Docker Daemon
    도커 데몬은 컨테이너의 생명 주기를 관리. 데몬은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨 등을 관리할 수 있다.
  3. Docker Client
    사용자가 명령어를 입력하는 인터페이스. (docker run, docker pull 등).
  4. Docker Registry
    이미지를 저장하는 장소. Docker Hub가 가장 유명한 레지스트리이다.
  5. 컨테이너 생명 주기
    1. Dockerfile 작성
    2. docker build 명령으로 이미지 생성
    3. docker run 명령으로 컨테이너 실행
    4. 컨테이너가 실행되면 도커 데몬이 컨트롤

 

장점

  1. 이식성: 의존성과 함께 패키징되므로 어떤 환경에서도 똑같이 실행.
  2. 빠른 시작과 종료: VM보다 훨씬 빠르게 시작과 종료가 가능.
  3. 효율적인 자원 사용: 호스트 OS와 자원을 공유하기 때문에 메모리와 CPU 사용이 효율적임.
  4. 버전 관리와 배포 용이: 이미지를 버전으로 관리할 수 있고, 레지스트리를 통해 쉽게 배포할 수 있음.
  5. 모듈화와 분리: 마이크로서비스 아키텍처를 쉽게 구현.

단점

  1. 성능 오버헤드: 가상 머신에 비해 적지만, 컨테이너화는 일부 성능 오버헤드를 가짐.
  2. 복잡성: 오케스트레이션, 네트워킹, 볼륨 관리 등은 초기 설정과 학습이 필요.
  3. 보안 이슈: 컨테이너가 호스트 시스템과 자원을 공유하기 때문에 잘못 구성하면 보안 문제가 발생할 수 있음.
  4. 다양한 플랫폼 지원 문제: 모든 애플리케이션과 시스템이 컨테이너화에 적합하지 않을 수 있음.

 

 아직 내가 큰 서버 혹은 장시간 서버를 운영한 적이 없기에 크게 필요성을 느끼지 못하지만 도커에 대한 언급이 자주 들려오고 많이 사용되기에 이 정도라도 정리하고 알고 있는 게 나중에 사용하는데 도움이 될 것이라 믿는다. 나중에 직접 사용한다면 사용했던 방법과 그때 직접 사용하면서 느낀점과 알게 된 것들을 다시 정리할 것이다.