개발/Docker

[도커 입문 시리즈] docker 이미지와 레이어 개념

ITIbiza 2024. 8. 2. 16:44
반응형

도커

 

이 글에서는 입문자를 위한 도커 시리즈로 도커 입문 시리즈 - Docker 이미지와 레이어 개념에 대해서 소개합니다.

 

안녕하세요! ITibiza입니다.

 

도커 시리즈 1탄

2024.07.31 - [개발/Docker] - [도커 입문 시리즈] MacOS에서 Docker 설치하는 방법

 

[도커 입문 시리즈] MacOS에서 Docker 설치하는 방법

이 글에서는 입문자를 위한 도커 시리즈로 도커 입문 시리즈 - MacOS에서 Docker 설치하는 방법에 대해서 소개합니다. 안녕하세요! ITibiza입니다. 본론에 앞서 입문자를 위한 도커 시리즈로 도커를

itibiza.tistory.com

 

도커 이미지의 개념

도커 이미지는 애플리케이션을 실행하기 위해 필요한 서버 프로그램, 소스코드와 라이브러리, 컴파일된 실행 파일을 포함한 일종의 템플릿입니다.

 

도커 이미지는 소프트웨어를 컨테이너 화하여 다양한 환경에서 일관성 있게 배포하고 실행할 수 있게 해 줍니다.

이미지는 컨테이너의 파일 시스템을 정의하고, 컨테이너를 생성할 때 필요한 설정과 명령을 포함합니다.

 

쉽게 이해하기

node 이미지는 node를 실행하기 위한 모든 파일을 가지고 있으며, mysql이미지는 mysql을 실행하는데 필요한 모든 파일과 실행명령어, 포트정보를 모두 가지고 있습니다.

 

도커 이미지와 레이어(Layer)

레이어는 기존 이미지에 추가 요소가 필요할 때 사용되는 개념입니다.

이미지 파일을 다시 다운로드하지 않고 추가하는 이미지 파일만 적용하기 위해 사용됩니다.

 

각 레이어는 이미지의 특정 상태를 나타내며, 새로운 레이어는 이전 레이어의 변경 사항만을 포함합니다.

이러한 방식으로 이미지의 크기를 줄이고 효율성을 높일 수 있습니다.

 

도커 이미지의 구성 요소

  1. 파일 시스템 스냅숏: 도커 이미지는 파일 시스템의 스냅숏을 포함합니다. 이는 애플리케이션 코드, 런타임, 시스템 라이브러리, 설정 파일 등 컨테이너가 실행되기 위해 필요한 모든 파일을 포함합니다.
  2. 메타데이터: 도커 이미지는 이미지의 이름, 태그, 작성자 정보, 빌드 시 사용된 명령어 등 다양한 메타데이터를 포함합니다. 이 메타데이터는 이미지의 관리와 배포를 돕습니다.
  3. 계층 구조: 도커 이미지는 여러 계층으로 구성되어 있습니다. 각 계층은 이전 계층의 변경 사항만을 포함하며, 이를 통해 이미지의 크기를 줄이고, 재사용성을 높일 수 있습니다. 예를 들어, 기본 운영 체제 계층 위에 애플리케이션 런타임 계층이 쌓이고, 그 위에 애플리케이션 코드가 쌓이는 식입니다.

 

도커 이미지의 생성 및 사용 과정

  1. Dockerfile 작성: Dockerfile은 도커 이미지를 빌드하기 위한 설정 파일입니다. Dockerfile에는 베이스 이미지, 파일 복사, 패키지 설치, 명령어 실행 등 이미지 빌드 과정을 정의하는 명령어가 포함됩니다.
  2. 이미지 빌드: docker build 명령어를 사용하여 Dockerfile을 기반으로 도커 이미지를 빌드합니다. 이 과정에서 Dockerfile에 정의된 명령어가 순차적으로 실행되며, 각 명령어는 새로운 이미지 계층을 생성합니다.
  3. 이미지 저장 및 배포: 빌드된 도커 이미지는 로컬 시스템에 저장되며, Docker Hub와 같은 이미지 레지스트리에 푸시(push)하여 다른 시스템에서 사용할 수 있도록 배포할 수 있습니다.
  4. 컨테이너 실행: docker run 명령어를 사용하여 도커 이미지를 기반으로 컨테이너를 실행합니다. 컨테이너는 이미지의 불변 스냅숏을 기반으로 생성되며, 실행 시점에 컨테이너의 상태가 변화합니다.

 

도커 이미지의 장점

  1. 일관성: 도커 이미지는 애플리케이션 실행 환경을 일관성 있게 유지합니다. 개발, 테스트, 프로덕션 환경 간에 동일한 이미지를 사용하여 환경 차이로 인한 문제를 줄일 수 있습니다.
  2. 이식성: 도커 이미지는 특정 운영 체제나 인프라에 종속되지 않으므로, 다양한 환경에서 동일한 이미지를 실행할 수 있습니다. 이는 개발자와 운영 팀 간의 협업을 원활하게 합니다.
  3. 효율성: 도커 이미지는 계층화된 구조를 통해 효율적인 스토리지 사용과 빠른 배포를 가능하게 합니다. 변경된 계층만 업데이트하면 되므로 이미지 빌드와 배포가 빠릅니다.
  4. 재사용성: 도커 이미지는 여러 애플리케이션에서 재사용할 수 있는 공통 베이스 이미지를 허용합니다. 예를 들어, 동일한 운영 체제 이미지를 다양한 애플리케이션에서 사용할 수 있습니다.

 

Docker 이미지와 레이어 개념 마지막으로

도커 이미지는 애플리케이션을 실행하는데 필요한 파일과 설정을 포함한 패키지입니다.

도커를 독립적으로 컨테이너 화하여 다양한 환경에서 배포하는데 중요한 역할을 합니다.

 

도커 이미지에 가장 큰 특징은 독집적인 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용되며 여러 계층으로 된 바이너리 파일로 존재합니다.

 

이번 글에서는 로커 이미지 개념과, 구성요소, 장점, 레이어에 대해서 알아보았습니다.

 

다음 글에서 node.js 베이스로 이미지를 생성하고 컨테이너 화하는 명령어와 예제를 알아보겠습니다.

 


 

 

필자의 잘못된 부분이나 피드백은 언제든지 댓글로 남겨주세요!

감사합니다^^

 

 

2024.07.30 - [IT소식] - IT 필수 용어 VPN (Virtual Private Network) 알아보기

 

IT 필수 용어 VPN (Virtual Private Network) 알아보기

안녕하세요! ITibiza입니다. VPN은 Virtual Private Network 약자이며 가상 사설망으로 번역됩니다.인터넷과 같은 공공 네트워크를 통해 사설 네트워크를 구축하여 안전하고 익명적으로 데이터를 송수신

itibiza.tistory.com

 

 

2024.07.26 - [개발/Javascript] - [자바스크립트 시리즈] javascript 함수 스코프 이해하기

 

[자바스크립트 시리즈] javascript 함수 스코프 이해하기

본론에 앞서안녕하세요! 이글에서 자바스크립트 시리즈 - javascript 스코프의 개념과 예제 알아보겠습니다. 자바스크립트(javascript)는 동적 인터프리터 프로그래밍 언어이기 때문에 다른 전통적

itibiza.tistory.com

 

 

https://cometruedream.tistory.com/273

 

리액트 제어 vs 비제어 컴포넌트 알아보기

🤷‍♂️ 리액트 폼 요소란?리액트에서 폼(form) 요소에 상태값을 다루는 방식에 따라 제어 컴포넌트(controlled component)와 비제어 컴포넌트(uncontrolled component) 방식으로 나눠집니다. 이 두 가지 접

cometruedream.tistory.com

 

 

반응형