[Docker] Docker

그냥·2022년 7월 12일
2

docker

목록 보기
2/6

1. 가상화

1) 정의

  • 일일이 부팅할 필요 없이 물리적 머신(자원) 위에 여러 가상 머신(OS, 소프트웨어 등)을 띄워서 쓰는 것을 말한다.

2) 왜 사용하는가?

  • 한 대의 컴퓨터에 한 가지 일만 시키기에는 남는 자원이 있다. 남는 자원을 효율적으로 사용하기 위해서 가상화 기술을 사용한다.

3) 도커와 기존 가상화(Hypervisor)의 차이점

  • 하이퍼바이저: Host OS 위에 Guest OS와 APP을 함께 가상화 한다. Guest OS 또한 가상화 하기 때문에 매우 무겁다.
  • 도커: Guest OS가 없이 APP 실행에 필요한 파일을 image에 담아 가상화하여 APP을 실행할 수 있다.



2. Docker

1) 정의

  • 컨테이너 가상화 기술이자 회사명이다.
  • 도커가 등장하기 전에 여러 OS에서 개발하기 때문에 개발한 OS에서는 돌아가지만 다른 OS에서는 돌아가지 않은 경우가 많았다.
  • 컨테이너 가상화 기술을 통해서 다른 OS에 배포를 해도 잘 돌아갈 수 있게 되었다.

2) 구조

  • Client
  • Docker Daemon
    - image 생성
    - image pull
    -
  • Docker Registry
  • Container: pull한 image를 기반으로 만들어진 서버

3) 컨테이너

  • 도커의 전체적인 모습은 카세트와 카세트 플레이어이다.
    - 도커 이미지: 카세트 테이프
    - 도커 데몬(서버): 카세트 플레이어
    - 컨테이너: 이미지인 카세트 테이프를 카세트 플레이어에서 재생하여 나오는 결과물

  • 컨테이너의 프로세스: 단일 프로세스로 동작한다. 프로세스의 작업이 종료되면 컨테이너도 종료된다. 음악 재생이 모두 끝나면 종료되는 것과 마찬가지이다.

  • 일일이 배포하던(기초 세팅, git clone, runserver 등)을 이미지를 다운받아 컨테이너 실행하는 것만으로 배포를 자동화할 수 있다.


4) Dockerfile

  • 정의: 커스텀으로 도커 이미지를 작성한 것
  • FROM ~ : 도커에서 제공하는 공식 이미지(python3 등)
  • CMD: 컨테이너 내에서 실행될 커맨드
도커 이미지 빌드 명령어
docker build -t {name} {Dockerfile 디렉토리}

0개의 댓글