728x90
이번 포스트에는 docker의 이미지, 레이어, 컨테이너 개념을 알아보고 정리해보겠습니다.
1. 이미지(image)
-도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태
이미지 특징
- 특정 프로세스를 실행하기 위한(컨테이너 생성(실행)에 필요한) 모든 파일과 설정값(환경)을 지닌 것
- ex) Ubuntu 이미지- ubuntu를 실행하기 위한 모든 파일을 가지고 있다.
- ex) Oracle 이미지- oracle을 실행하는데 필요한 파일과 실행명령어, port정보 등을 모두 가지고 있다.
- 이외에도 많은 이미지들이 있고, git hub와 유사한 docker hub 에서 찾고 버전관리 및 배포(push&pull)이 가능하다.
- 도커 이미지의 용량은 보통 수백 MB~ 수 GB다.
- 이미지는 상태 값을 가지지 않고 변하지 않는다(immutable) (도커 컨테이너의 스냅샷의 개념과도 비슷하다)
- 하나의 이미지는 여러 컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아 있다.
- 다양한 API가 제공되어 원하는 만큼 자동화가 가능하다.
- dockerfile이라는 파일로 이미지를 만든다. dockerfile에는 소스와 함께 의존성 패키지 등 사용했던 설정 파일을 버전 관리하기 쉽도록 명시되어진다.
2. 레이어(layer)
-기존 이미지에 추가적인 파일이 필요할 때 다시 다운로드 받는 방법이 아닌 해당 파일을 추가하기 위한 개념
- 이미지는 여러 개의 읽기 전용(read only) layer로 구성되고, 파일이 추가되면 새로운 layer가 생성된다.
- 도커는 여러 개의 layer를 묶어서 하나의 파일시스템으로 사용 할 수 있게 해준다. 그래서 이미지와 레이어는 같은 의미로도 사용
- Dockerhub 및 개인 저장소에서 이미지를 공유할 때는 바뀐 부분(layer=image)만 주고받기 가능한데 이것이 version 관리하는 원리이다.
3. 컨테이너(container)
-이미지의 인스턴스, 이미지를 실행한 상태, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술
- 컨테이너는 이미지 layer에 읽기/쓰기(read-write) Layer를 추가하는 것으로 생성/실행된다.
- 여러 개의 컨테이너를 생성해도 최소한의 용량만 사용, 바뀐 부분을 읽기/쓰기 layer에 적음
- 컨테이너는 종료되어도 메모리에서 삭제되지 않고 남아있다. 삭제하려면 명시적으로 삭제해주어야 삭제가된다.
- 컨테이너를 삭제 하게 되면 컨테이너에서 생성한 파일이 사라지게된다.
- 한 서버는 여러 개의 컨테이너를 가져도 상관없다.
- 컨테이너는 독립적으로 실행된다.
- 컨테이너는 커널 공간과 호스트 OS자원(시스템 콜)을 공유한다.
참조:
https://hoon93.tistory.com/48
728x90
'DevOps > Docker' 카테고리의 다른 글
[Docker] docker 이미지 저장(commit), docker hub에 이미지 올리기, docker hub에서 이미지 받아오기 (0) | 2021.09.14 |
---|---|
[Docker] docker MySQL, postgreSQL 실행해보기 (0) | 2021.08.26 |
[Docker] docker 기본 명령어 정리 (image, container) (0) | 2021.08.23 |
[Docker] Docker란? ubuntu 18.04 에서 도커 설치하기, centos-7 에서 도커 설치하기 (0) | 2021.08.23 |
가상화 기술이란? 컨테이너란?/도커(docker) vs VMware /컨테이너(container),하이퍼바이저(hypervisor) (0) | 2020.07.07 |
댓글