도커에서 이미지는 무엇인가?
이미지란?
--
이미지는
파일 시스템에 특정한 시점의 상태를 저장해 놓은 압축 파일이다.
우선 서버에서 프로그램을 실행시키기 위해서는
해드웨어가 필요하고 해당 하드웨어에서 실행할 소프트웨어가 필요하다.
다만 소프트웨어만 가지고는 실행시킬 수 없다.
소프트웨어를 실행시키기 위해서는 위 그림처럼 구성이 필요하다.
- 소프트웨어가 하드웨어의 자원을 사용할 수 있도록 필수 기능을 제공해 주는 OS
- 소프트웨어가 필요로 하는 패키지, 라이브러리. 그리고 자바로 개발된 프로그램인 경우 실행시키기 위한 런타임 언어
즉, 서버에서 프로그램을 실행시키기 위해서는 소프트웨어적으로 3가지가 필요하다.
- OS
- 프로그램을 실행시키기 위해 필요한 구성 요소
- 실행시킬 프로그램
이것들을 모두 한 곳에 압축한 것이 바로 이미지이다.
그래서 이미지만 가지고 있으면 다른 요소들을 설치할 필요없이 바로 컨테이너로 실행시켜서 소프트웨어를 구동시킬 수 있는 것이다.
이미지는 윈도우의 백업 기능과 비슷하다.
컴퓨터에 윈도우 OS와 프로그램을 설치하고 해당 상태를 백업해 놓으면
언제든지 해당 프로그램을 실행시킬 수 있는 시점으로 환경을 만들 수 있다.
그리고 백업 파일을 가지고 있으면 다른 컴퓨터에서도 공유를 할 수 있다.
이미지는 윈도우 백업 파일보다 크기가 매우 작기 때문에 인터넷을 통해 저장 및 공유가 더욱 수월하다.
그래서 다른 사람이 만들어 놓은 이미지를 다운로드하여서 사용할 수도 있고 직접 이미지를 만들어 공유할 수도 있다.
--
도커와 이미지 개념 정리
--
- 도커 : 가상화 서버를 빠르고 가볍게 운영하기 위한 도구
- 이미지 : 특정 서버를 실행시킬 수 있는 상태(환경)를 저장한 압축 파일
도커는 가상 환경의 서버를 운영하기 위한 기술이며
컨테이너 내에서 웹 서버나 웹 애플리케이션 같은 소프트웨어를 운영하기 위해 사용한다.
컨테이너는 이미지를 통해서 실행이 가능하다.
이미지는 특정 소프트웨어를 실행하기 위해 OS, 의존 요소, 소프트웨어가 포함되어 있는 파일 시스템의 상태를 저장해 놓은 압축 파일이다.
이미지를 컨테이너로 실행시키면 호스트OS 안에서 완전히 격리된 공간인 컨테이너가 만들어지게 된다.
결과적으로 컨테이너 안에서 소프트웨어가 실행된다.
--
이미지와 컨테이너의 관계 및 개념 정리
--
이미지와 컨테이너는
프로그램과 프로세스의 관계와 동일하다고 생각하면 된다.
프로그램
- 실행 가능한 소프트웨어
- 디스크 공간 차지
프로세스
- 실행 중인 소프트웨어
- 한 개의 프로그램은 여러 개의 프로세스로 실행 가능
- CPU, 메모리 등의 리소스 사용
이미지
- 실행 가능한 소프트웨어 ( + 실행에 필요한 환경)
- 디스크 공간 차지 (압축 파일 형태로 호스트 머신에 위치)
컨테이너
- 실행 중인 이미지
- 한 개의 이미지는 여러 개의 컨테이너로 실행 가능
- 컨테이너 실행 시 프로세스도 함께 실행
컨테이너와 프로세스의 차이
컨테이너는 가상화 기술이므로
이미지를 컨테이너로 실행할 때에는 격리된 공간이 만들어지고
격리된 공간에서 이미지에 지정해 둔 프로그램이 프로세스로 실행된다.
--
참고 및 출처
'Docker' 카테고리의 다른 글
이미지의 메타데이터(Metadata)란? (0) | 2024.06.10 |
---|---|
이미지 관리 + 컨테이너 실행 및 삭제하기 (명령어) (0) | 2024.06.08 |
Docker 명령어 정리 (0) | 2024.06.07 |
Docker란? (0) | 2024.06.04 |
[Docker 시작전] 베어메탈 vs 하이퍼바이저 vs 컨테이너 (feat. 가상화) (0) | 2024.06.04 |