본문 바로가기
Docker/개념

[Docker] 컨테이너란 문엇인가?

by Aslan0 2024. 3. 11.

개요

금주부터 매주 진행할 포스팅 항목은 Docker이다.

이 주제를 바탕으로 글을 쓰게된 이유는 Backend 개발자로 업무를 진행하면서 모든 자료를 찾아볼때 항상 동반되는것이 Docker 이녀석 이였기 때문이다.

이젠 Docker를 모르고는 서비스 운영을 하기 힘들기 때문에 많은 주니어 개발자들이 이글을 읽고 좀 더 쉽게 Docker를 활용했으면 좋을것 같다.

Docker의 docs를 정리한 내용이라고 보면 되며 자주 읽어야 좋은 내용이라 편하기 읽을수 있도록 작성하는데 중점을둘 생각이다.

컨테이너란?

컨테이너는 코드를 이한 격리된 환경이다.

이말은 OS(운영체제)나 파일에 대해 전혀 알지 못한다는 것을 의미한다.

더보기

컨테이너는 해당 호스트 스스템에서 실행되는 다른 모든 프로세스와 격리된 호스트 시스템에서 실행되는 샌드박스 프로세스이다.

해당 기능은 Linux의 커널 네임스페이스와 cgroup을 활용하며, Docker는 이런 기능을 쉽게 사용할수 있게한다.

컨테이너 기능

컨테이너는 아래의 역할을 수행한다.

  • 로컬, 가상 머신에서 실행하거나 클라우드 배포를 할수있다.
  • 이식이 가능하면 모든 OS에서 실행 될 수 있다.
  • 다른 컨테이너와 격리되며, 자체 소프트웨어 바이너리, 구성 등을 실행한다.
  • 실행 가능한 이미지 인스턴스로, Docker API와 CLI를 사용하여 컨테이너를 생성,시작,중지, 이동 또는 삭제할 수 있다.

Linux를 조금 공부 하셨던 분이라면 뭔가 비슷한게 있었는데? 라는 생각이 들법하다.

바로 chroot이다. 하지만 컨테이너는 chroot를 사용할 때 사용할 수 없는 추가 격리를 추가하기 때문에 비슷하지만 다르다.

 

이미지가 뭔데?

여기까지 읽었다면 이미지가 뭔데? 라고 생각할것이다.

실행중인 컨테이너는 격리된 파일 시스템을 사용하는데, 이 격리된 파일 시스템은 이미지에 의해서 제공된다.

이미지에는 애플리케이션을 실행하는데 필요한 모든것(모든 종속성, 구성, 스크립트, 바이너리 등)이 포함되어야 한다.

또한 이미지에는 환경변수, 기본 명령과 같은 컨테이너에 대한 다른 구성도 포함되어있다.(실행 및 기타 메타데이터.)

한마디로 이미지라는 것은 코딩 개념에서 배웠던 "객체"처럼 빵틀 이라고 생각하면된다! 같은 이미지로 찍어 내면 같은 동작을 하는 친구가 나온다는 것이다!!

댓글