이미지와 컨테이너

2024. 9. 3. 22:44·Docker
반응형

이미지(Image)

소프트웨어를 실행하기 위해서는 운영체제, 프로그램이 실행하기 위해서 필요한 요소(런타임, 라이브러리 등)와 실행시킬 프로그램이 필요하다.

 

이미지를 활용하면 의존 요소를 설치하는 과정 없이 이미지 이름만 지정하면 편하게 프로그램을 구동시킬 수 있다.

쉽게 말해 이미지란 파일 시스템의 특정 시점을 저장해 놓은 압축 파일이다.

 

이미지를 통해 제작 단계에서부터 소프트웨어뿐만 아니라 소프트웨어가 실행하기 위해서 필요한 모든 구성요소(OS, 구성요소, 프로그램)를 미리 준비해서 압축한다.

 

압축한 이미지를 다운 받아서 run 시키면 격리된 공간에 컨테이너가 실행된다.

컨테이너를 실행하면 이미지 안에 있던 프로그램이 실행된 것이다.

 

이미지는 백업 파일과 같아서 그 저장해 놓으면 프로그램을 실행하는 시점을 만들 수 있고 다른 컴퓨터에 편하게 공유할 수도 있다.

 

가상머신 스냅샷과 개념이 비슷하지만 이미지의 크기가 훨씬 작다.

 

컨테이너와 이미지

도커는 컨테이너 내에서 소프트웨어를 운영하는 것이 목적인데, 컨테이너는 이미지를 통해서 실행할 수 있다.

 

더 자세히 말하면 이미지를 컨테이너로 실행 시키는 것은 이미지에 저장되어 있는 모든 요소들을 격리된 공간으로 만든 다음에 격리된 공간 안에서 프로그램(이미지)를 프로세스(컨테이너)로 실행시키는 단계를 거치는 것이다.

 

이미지와 메타데이터

이미지 파일에 대한 데이터를 메타데이터라고 한다. 예를 들어 이미지의 이름, 파일 사이즈 같은 정보가 있다.

 

중요한 부분은 env와 cmd 필드이다.

 

env는 애플리케이션이 사용하는 환경설정값으로 키와 밸류로 구성됨된다.

소프트웨어 버전과 프로그램을 실행할 때 필요한 파일 경로 같은 정보가 들어가 있다.

쉽게 말해 env는 소프트웨어가 실행할 때 사용할 설정 정보

 

cmd는 이미지를 컨테이너로 실행할 때 명령어를 지정할 수 있다.

이미지를 컨테이너로 실행할때 cmd에 있는 명령어를 통해서 어떤 프로그램을 실행할지를 메타데이터에서 결정한다.

여기에서 지정한 이미지와 이미지의 압축 파일과 이미지의 메타데이터를 사용해서 격리된 공간의 컨테이너가 만들어진다.

 

아래 명령어를 통해 이미지의 세부 정보를 확인할 수 있다.

docker image inspect image명

 

MySQL 8.0 버전 이미지를 위 명령어로 확인해보았다.

 

컨테이너 실행 시 env를 덮어 씌우려면 아래와 같은 명령어를 사용해야 한다.

 

docker run --env KEY=VALUE 이미지명

 

참고자료

https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%89%AC%EC%9A%B4-%EB%8F%84%EC%BB%A4/dashboard

 

개발자를 위한 쉬운 도커 강의 | 데브위키 - 인프런

데브위키 | 현업 개발자가 도커를 사용한 경험을 녹여낸 새로운 커리큘럼으로 기존 교재 및 강의와 차별된 강의를 제공합니다. 단순한 명령어 사용법이 아닌 도커를 왜 사용해야하는지 대한 근

www.inflearn.com

 

반응형
'Docker' 카테고리의 다른 글
  • 도커와 가상화 기술
  • docker-compose의 Redis-cluster와 통신이 안된다..!?
  • ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
  • 도커 컴포즈
Debin
Debin
공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
  • Debin
    리팩토링하는 블로그
    Debin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
        • DB 기초
        • MySQL
        • SQL 튜닝
      • OS
      • Network
      • Git
      • 디지털콘텐츠기획
      • 소프트웨어공학
      • 코딩테스트
        • 프로그래머스
        • 백준
        • 인프런
      • 공부 일지
      • 독서
        • 클린코드
        • 일상 속 사물이 알려주는 웹 API 디자인
        • 토비의 스프링
        • 객체지향의 사실과 오해
        • 자바 잘 읽는 법
      • 기록 및 회고
      • Cloud
        • AWS
      • 개발
        • Java
        • Spring Core
        • Spring MVC
        • Spring DB
        • Spring Boot
        • Spring Security
        • Spring Batch
        • JPA
        • Test
        • Android
      • 대외활동
        • UMC SERVER
        • 카엔프 SW 아카데미
      • 프로젝트
      • Docker
      • Gradle
      • ELK
      • 실무 이야기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

    • 본인 깃허브입니다!
  • 인기 글

  • 태그

    container
    리눅스
    트랜잭션
    스프링
    코딩 #개발자 #노마드북클럽 #노개북
    AOP
    프록시
    JPA
    토비의 스프링
    자바
    스프링 부트
    AWS
    데이터베이스
    Java
    spring mvc
    컨테이너
    ORM
    spring boot
    객체지향
    redis
    객체
    운영체제
    spring
    docker
    innodb
    인덱스
    test
    mysql
    도커
    SQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Debin
이미지와 컨테이너
상단으로

티스토리툴바