본문 바로가기
Docker

Docker #1 - 도커와 컨테이너, 컨테이너 이미지

by 혀닙 2023. 4. 5.

도커란?

  • 컨테이너 기반_의 _가상화 도구
    • 리눅스 컨테이너 기술(LXC; Linux Containers) 기반
  • 애플리케이션을 _컨테이너 단위_로 _격리_하여 실행하고 배포하는 기술
  • 고 언어로 작성됨

 

공식 문서에서 말하는 도커

  • 앱 개발, 배포 및 실행을 위한 개방형 플랫폼(open platform)
  • 앱에서 인프라를 분리하여 신속하다
  • 앱을 관리하는 것과 동일한 방식으로 인프라를 관리할 수 있다
  • 앱 배포와 테스트에 있어서 도커의 방법론을 활용하면 코드 작성과 프로덕션 환경에서의 실행 사이의 지연을 크게 줄일 수 있다.
  • 즉 도커는 다양한 운영체제에서 사용될 수 있으며 컨테이너화된 앱을 손쉽고 효율적으로 빌드, 배포, 관리할 수 있는 다양한 기능 제공해준다

 

[참고] 샌드박스(SandBox)란?
외부로부터 받은 파일을 바로 실행하지 않고 보호된 영역에서 실행시켜 봄으로써 외부로부터 들어오는 파일과 프로그램이 내부 시스템에 악영향을 주는 것을 미연에 방지하는 기술

 

 

도커 플랫폼(docker platform)

  • 도커는 컨테이너라고 불리는 느슨하게 격리된 환경에서 앱을 패키징하고 실행할 수 있기능을 제공한다
  • 이러한 격리와 보안을 통해 특정 호스트에서 여러 컨테이너들을 동시에 실행할 수 있다
  • 컨테이너들은 가벼우면서도 앱을 실행하기 위해 필요한 모든 것을 포함한다
    • 따라서 개발자는 호스트에 현재 설치된 것들에 의존할 필요가 없다
  • 작업중 손쉽고 컨테이너 공유가 가능하며, 모든 사람이 동일한 방식으로 작동하는 동일한 컨테이너를 공유하는 것이 가능하다

 

 

컨테이너란?

  • 가상화 기술 중 하나로 호스트 머신의 다른 모든 프로세스로부터 격리되어(isolated) 별도의 머신에서 실행되는 샌드박스 프로세스(sandboxed process)
    • 격리는 리눅스의 기능인 커널 네임스페이스(kernel namespace)와 cgroup을 활용함
    • 호스트 OS 위에 컨테이너 엔진(container engine)을 통해 여러 개의 격리된 환경을 생성
    • 각각의 컨테이너 환경 내부에서 라이브러리와 애플리케이션을 실행
  • 따라서 컨테이너는 OS나 파일에 대해서 알 수 없으며 Docker Desktop에 의해 제공된 환경에서 실행된다

 

공식문서에서 말하는 컨테이너

  • 실행가능한 이미지의 인스턴스(runnable instance of machines)
    • DockerAPI 또는 CLI를 통해 컨테이너를 생성, 시작, 중지, 이동 또는 삭제 가능
  • 로컬 머신, 가상머신에서 실행 가능하거나 클라우드에 배포 가능
  • 이식 가능(portable)
    • 모든 운영체제에서 동작함
  • 다른 컨테이너로부터 격리되어 자체 소프트웨어, 바이너리, 설정을 실행

 

 

컨테이너 이미지란?

  • 컨테이너를 실행할때, 컨테이너는 격리된 파일시스템을 사용하며
  • 컨테이너 이미지는 이러한 _커스텀 파일시스템을 제공_한다
  • 이미지는 컨테이너의 파일시스템을 포함하기 때문에 앱을 실행하기 위해 필요한 모든 것을 포함해야만 한다
    • 모든 종속성
    • 설정들
    • 스크립트
    • 바이너리 등
  • 또한 환경 변수나, 실행을 위한 기본 명령어 또는 메타데이터와 같은 컨테이너를 위한 다른 설정들을 포함하기도 한다

'Docker' 카테고리의 다른 글

Docker #2 - 도커의 구조  (0) 2023.04.05

댓글