Stack/Docker

도커 Docker

annovation 2024. 12. 14. 10:40

Docker  

Docker는 애플리케이션을 개발, 배포, 실행하기 위한 컨테이너 기반의 오픈 소스 플랫폼입니다.
Docker를 사용하면 애플리케이션과 그 의존성을 컨테이너(Container)라는 표준화된 단위로 묶어서, 어디서든 실행할 수 있습니다.

 

한국말 맞나.. 설명을 들어도 모르겠다..ㅎ


비유를 통한 예시

  • 도커 = 공구 상자
    • 우리가 집에서 물건을 고치려고 하면, 필요한 도구를 공구 상자에 모두 모아 두듯이
      도커도 프로그램이 잘 작동하도록 필요한 모든 것을 한 상자에 담아서 어디에서든 실행할 수 있게 해준다
  • 왜 필요할까?
    • 집에서 물건을 고칠 때 망치, 드라이버, 못 같은 도구가 다 있어야 한다. 도구가 하나라도 없으면 일을 못 한다.
    • 도커는 프로그램이 실행되기 위해 필요한 모든 도구, 파일, 설정을 공구 상자처럼 한 곳에 모아서 준비해 둔다.
      그래서 어디서든 똑같이 사용할 수 있다!
  • 특징
    1. 필요한 모든 걸 한 곳에 담음
      • 공구 상자 안에 고칠 때 필요한 모든 도구가 있듯이, 도커는 프로그램 실행에 필요한 코드, 파일, 설정을 다 넣어둔다.
    2. 어디서나 사용 가능
      • 공구 상자를 들고 가면 집에서도, 친구 집에서도, 어디서든 똑같이 물건을 고칠 수 있듯이 도커도 한 컴퓨터에서 만든 프로그램을 다른 컴퓨터에서도 똑같이 실행할 수 있다.
    3. 깔끔하고 정리된 상태
      • 공구 상자는 필요한 도구만 딱 넣어서 깔끔하게 정리돼 있는 것처럼 도커도 프로그램 실행에 필요한 것들만 딱 담겨 있어서 정리되어 있어
  • 도커로 할 수 있는 일
    1. 다른 컴퓨터에서도 문제없이 실행
      • 공구 상자만 있으면 어떤 장소에서든 물건을 고칠 수 있듯이, 도커로 만든 프로그램은 다른 컴퓨터에서도 문제없이 실행된다.
    2. 다양한 작업에 맞는 공구 상자 만들기
      • 예를 들어, 어떤 상자는 망치와 못이 들어 있고, 다른 상자는 드라이버와 나사가 들어 있는 것처럼 도커로 프로그램을 만들 때도, 필요한 파일과 설정을 골라서 딱 맞는 상자를 만들 수 있다.

구성 요소

1.  공구 상자에 담긴 구성 요소 → 도커의 컨테이너 구성 요소

 

공구 상자에는 물건을 고치기 위해 필요한 모든 도구가 담겨 있듯이, 도커에서도 프로그램을 실행하기 위해 필요한 모든 구성 요소를 하나로 묶어준다.

  • 코드 : 프로그램을 실행하는 핵심 파일
    → 공구 상자의 주요 도구, 예를 들어 망치나 드라이버
  • 라이브러리 : 프로그램이 실행되는 데 필요한 추가적인 소프트웨어
    → 공구 상자의 못이나 나사 같은 부품
  • 설정 파일 : 프로그램이 어떻게 작동해야 하는지 알려주는 규칙
    → 공구 상자의 사용 설명서

 

2. 공구 상자 설계도 → Docker 이미지(Image)

공구 상자를 만들기 전에 어떤 도구를 넣을지 리스트를 작성하듯 Docker에서 이미지(Image)라는 리스트를 작성한다.

  • Docker 이미지 : 컨테이너(공구 상자)를 만들기 위한 설계도
  • 이미지에는 어떤 도구(코드, 라이브러리, 설정 파일 등)를 넣을지 정의되어 있다.

 

3. 실제 공구 상자 → Docker 컨테이너(Container)

  • 이미지를 기반으로 만들어진 실제 공구 상자가 바로 Docker 컨테이너이다.
  • 공구 상자를 열면 바로 일을 시작할 수 있듯이, 컨테이너를 실행하면 프로그램이 바로 작동한다.

 

4. 다양한 공구 상자 → 여러 Docker 컨테이너

목공 작업을 위한 공구 상자에는 망치, 못이 필요하고 전기 작업을 위한 공구 상자에는 전선, 드라이버가 필요하듯 프로그램마다 필요한 도구가 다르다.

  • Docker에서도 웹 서버를 실행하기 위한 컨테이너, 데이터베이스를 실행하기 위한 컨테이너를 각각 따로 만들 수 있다.
  • 이렇게 각각의 컨테이너는 서로 독립적으로 실행돼서 작업이 겹치거나 방해받지 않는다.

 

5. 공구 상자 관리 → Docker 엔진(Docker Engine)

공구 상자를 잘 정리하고, 언제든 필요할 때 꺼내 쓸 수 있도록 관리해주는 시스템이 필요하다. Docker에서는 Docker Engine이 이 역할을 한다.

  • Docker Engine은 이미지를 기반으로 컨테이너를 만들고 실행하거나, 실행 중인 컨테이너를 멈추고 관리하는 역할을 한다.

6. 공구 상자 공유 → Docker Hub

친구랑 똑같은 공구 상자를 쓰고 싶다면 상자를 만들어서 친구에게 보내주면 된다. Docker에서는 Docker Hub라는 공유 플랫폼이 이 역할을 해준다.

  • Docker Hub는 전 세계 사람들이 만든 이미지를 공유하는 곳
  • 필요한 이미지를 다운로드받아 사용할 수 있다.

 

7. 공구 상자에서 불필요한 도구 제거 → 경량화

공구 상자에 너무 많은 도구가 있으면 무겁고 번거롭다. Docker도 필요한 것만 담아서 컨테이너를 가볍게 만든다.

  • 경량화된 컨테이너는 빠르게 실행되고, 저장 공간도 절약할 수 있다.

요약

공구 상자 비유 Docker 개념
공구 상자 안에 모든 도구가 들어 있음 컨테이너는 프로그램 실행에 필요한 모든 것을 포함
공구 상자를 만들기 전 도구 리스트 작성 Docker 이미지는 컨테이너 생성의 설계도
공구 상자 자체 Docker 컨테이너
작업별 다른 공구 상자 프로그램별 다른 컨테이너
공구 상자 관리 시스템 Docker Engine
친구와 공구 상자 공유 Docker Hub
불필요한 도구 제거로 경량화 컨테이너 경량화

출처

OpenAI ChatGPT (https://openai.com)