Docker(1) - Docker 기본개념

any1ok·2021년 9월 15일
0

이번 포스팅부턴 도커에 관하여 써보려고한다

먼저 도커란???

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼 이다.
이에 대해 좀서 자세히 알아보자

도커에대해 좀더 알아볼려면 컨테이너와 이미지 두개념에 대해 알아야 한다.

이미지란?

도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image라 한다. 다시 말해, 특정 프로세스를 실행하기 위한(즉, 컨테이너 생성(실행)에 필요한) 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 실치 할 필요 없는 상태의 파일을 의미한다.

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

1) 따라서 도커 이미지의 용량은 보통 수백MB ~ 수GB가 넘는다. 하지만 가상머신의 이미지에 비하면 굉장히 적은 용량이다.

2) 이미지는 상태 값을 가지지 않고 변하지 않는다(Immutable).

이부분이 이미지의 가장 중요한 부분중 하나가 아닐까 싶다 결국 이미지는 모두 동일하고 우리가 변경하는 부분을 레이어(Layer)로 구분해 우리가 변경한 코드부분만을 가지고 다른 켄테이너 혹은 다른 서버에서도 똑같은 동작을 유도할수있다.

3) 하나의 이미지는 여러 컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아 있다.

컨테이너란??

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

1) 컨테이너는 이미지 Layer에 읽기/쓰기(read-write) Layer를 추가하는 것으로 생성/실행된다. 따라서 여러 개의 컨테이너를 생성해도 최소한의 용량만 사용되며, 바뀐 부분을 읽기/쓰기 Layer에 적음

2) 한 서버는 여러 개의 컨테이너를 가져도 당연히 상관없으며, 컨테이너는 각각 독립적으로 실행된다.

3) 컨테이너는 커널 공간과 호스트OS 자원(시스템 콜)을 공유한다.(컨테이너끼리 연결 그리고 포트포워딩도 가능하다.)

다시한번 도커란???

나는 도커를 영화관에 비유하여 이해하고있다
영화 내용이 들어있는 영화필름(이미지)
영화필름을 사용하기위한영사기(컨테이너)
영화필름 과 영사기를 이용해 영화필름만 있다면 어떤 영화든지 영상할수있는 영화관(도커)

정도로 생각할수있지않을까? 단순화하면 말이다

profile
백엔드 개발자

0개의 댓글