Docker

minch·2021년 10월 17일
0

Programming

목록 보기
3/4
post-thumbnail

Docker


Docker를 사용해야 하는 이유?

  • Docker를 이해하기 위해서는 컨테이너 기술에 대한 설명이 빠질 수 없다.
    컨테이너는 VM(Virtual Machine)과 어느 정도 비슷하게 작용한다.

    하지만 컨테이너가 더 특정적이고 미세하고 작용한다. 컨테이너는 기본 베이스의 OS나 다른 컨테이너들로부터 어플리케이션과 외부 소프트웨어 라이브러리 전체를 격리한다.
    이 격리성이 가장 큰 장점이며 조금 더 자세한 사항들은 아래와 같다.

    • 도커는 시스템의 자원을 좀 더 효율적으로 이용할 수 있다.
      VM보다 훨씬 더 적은 메모리를 사용하며, 더 신속하게 시작하고 중지하며, 호스트 하드웨어에서 더 밀도 있게 배치될 수 있다.

    • 도커는 어플리케이션 이동을 가능하게 한다
      어플리케이션을 캡슐화 하기 때문에 손쉬운 이동이 가능하고 도커만 설치하면 어떠한 곳에서도 실행이 가능하므로 확장성이 뛰어나다.

    • 도커는 소프트웨어 전달 주기를 가속한다
      도커 컨테이너는 새 업무 기능을 가진 소프트웨어의 신 버전을 신속히 실무에 투입할 수 있고, 필요 시 이전 버전으로 신속히 롤백할 수 있다. 블루/그린 배포 등의 전략을 이행하기도 더 쉽다.

    • 도커는 마이크로서비스 아키텍처에서 빛을 발한다.
      마이크로서비스 아키텍쳐(MSA)는 모놀리틱과 대비되고, 별개의 팀과 별개의 앱 등 개별적으로 확장되고 서비스되는 소프트웨어 패턴이다. 이는 도커의 컨테이너 기술을 이용하면 더 효율적으로 도입할 수 있다.


Docker Image와 Container란?

  • 도커 이미지 : 도커 컨테이너를 구성하는 파일 시스템과 실행할 어플리케이션 설정을 하나로 합친 것으로, 컨테이너를 생성하는 템플릿 역할을 한다.

  • 도커 컨테이너 : 도커 이미지를 기반으로 생성되며, 파일 시스템과 어플리케이션이 구체화되어 실행되는 상태이다.

도커 이미지를 이용하여 배포나 버전 관리를 진행하며, 이를 바탕으로 실행시키는 컨테이너는 같은 이미지로 생성했다고 하더라도 별개의 상태를 갖는다. 이 점이 상태를 갖지 않는 도커 이미지와 컨테이너의 큰 차이점이다.

컨테이너는 크게 3가지의 상태를 가진다.

  1. 실행 중 상태

애플리케이션이 실행 중인 상태가 컨테이너의 실행 중 상태가 된다.
HTTP 요청을 받는 서버 애플리케이션이면 오류로 인해 종료되지 않는한 실행 중 상태가 지속되므로 실행 기간이 길다.
이에 비해 명령이 바로 실행되고 끝나는 명령행 도구 등의 컨테이너는 실행 중 상태가 길게 유지되지 않는다.
실행이 끝나면 정지 상태가 된다.

  1. 정지 상태

실행 중 상태에 있는 컨테이너를 사용자가 명시적으로 정지하거나 컨테이너에서 실행된 애플리케이션이 정상/오류 여부를 막론하고 종료된 경우에는 컨테이너가 자동으로 정지 상태가 된다.

컨테이너를 정지시키면 가상 환경으로서는 더이상 동작하지 않지만, 디스크에 컨테이너가 종료되던 시점의 상태가 저장되어 남는다.
그러므로 정지시킨 컨테이너를 다시 실행할 수 있다.

  1. 파기 상태

정지 상태의 컨테이너는 명시적으로 파기하지 않는 이상 디스크에 그대로 남아있다.
컨테이너를 자주 생성하고 정지해야 하는 상황에서는 디스크를 차지하는 용량이 점점 늘어나므로 불필요한 컨테이너를 완전히 삭제하는 것이 바람직하다.

한 번 파기한 컨테이너는 다시 실행할 수 없다는 점에 유의해야 한다.
같은 이미지로 새로운 컨테이너를 생성했다고 해도 각 컨테이너가 실행된 시각 등이 서로 다르고 애플리케이션의 처리 결과도 이에 따라 달라질 수 있기 때문에 완전히 같은 컨테이너를 새로 생성할 수는 없다.


참고자료

도커와 컨테이너를 꼭 사용해야 하는 이유
Docker #2. 도커 이미지와 컨테이너(images and containers)
[Container] 도커 알아보기(1) - 이미지와 컨테이너

0개의 댓글