Docker

도윤·2024년 4월 1일
post-thumbnail

도커 이미지 vs 도커 컨테이너

도커 이미지

도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image 라 한다.

다시 말해, 특정 프로세스를 실행하기 위한(즉 , 컨테이너 생성(실행) 에 필요한) 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일 하거나 이것저것 설치 할 필요 없는 상태의 파일을 의미한다.

예를 들어, Ubuntu 이미지는 Ubuntu 를 실행하기 위한 모-든 파일을 가지고 있으며, Oracle 이미지는 Oracle 을 실행하는데 필요한 파일과 실행명령어, port 정보 등을 모-두 가지고 있다.

  • 따라서 도커 이미지의 용량은 보통 수백 mb ~ 수 gb 가 넘는다. 하지만 가상머신의 이미지에 비하면 굉장히 적은 용량이다.
  • 이미지는 상태 값을 가지지 않고 변하지 않는다(immutable).
  • 하나의 이미지는 여러 컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아 있음.
  • 도커 이미지들은 github 와 유사한 서비스인 DockerHub 를 통해 버전 관리 및 배포(push , pull) 가 가능하다.
  • 다양한 API 가 제공되어 원하는 만큼 자동화가 가능하다.
  • 도커는 Dockerfile 이라는 파일로 이미지를 만든다. Dockerfile 에는 소스와 함께 의존성 패키지 등 사용했던 설정 파일을 버전 관리하기 쉽도록 명시되어 진다.( 그래서 누구나 이미지 생성과정을 확인할 수 있으며 수정할 수 도 있다.)

도커 컨테이너

이미지(image) 를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.

  • 컨테이너는 이미지 Layer 에 읽기/쓰기(read-write) layer 를 추가하는 것으로 생성 / 실행된다. 따라서 여러 개의 컨테이너를 생성해도 최소한의 용량만 사용되며, 바뀐 부분을 읽기/쓰기 Layer 에 적음
  • 컨테이너는 종료되었다고 메모리에서 삭제되어않고 남아있다. 삭제하려면 명시적으로 삭제해야 함. 즉, 종료가 되어도 컨테이너 & 읽기/쓰기 Layer 또한 그대로 존재하기 때문에 다시 시작할 수 있음
  • 컨테이너를 삭제했다는 것은 컨테이너에서 생성한 파일이 사라진다는 것.
    ex) db 라면 그동안 쌓였던 데이터가 모두 사라진 다는 뜻과 동일
  • 한 서버는 여러 개의 컨테이너를 가져도 당연히 상관없으며, 컨테이너는 각각 독립적으로 실행된다.
  • 컨테이너는 커널 공간과 호스트 os 자원(시스템 콜) 을 공유한다.
profile
기록은 기억을 이긴다⭐

0개의 댓글