Docker란?

권유진·2023년 1월 12일
0

Docker

목록 보기
1/2

Docker

등장 배경

  • 하나의 서버에 여러 개의 프로그램 설치하는 것도 문제
    • 서로 사용하는 라이브러리의 버전이 다르거나 동일한 포트를 사용하는 경우는 설치가 매우 까다로움
    • 차라리 서로 다른 서버에 설치하는게 편함 \rarr 자원 낭비
  • DevOps의 등장으로 개발주기가 짧아지고 배포는 더 자주 이뤄진다.
    • 마이크로서비스 아키텍쳐가 유행하면서 프로그램이 더 잘게 쪼개져 관리가 복잡해짐
  • 도커 등장으로 편해짐

도커란?

  • 컨테이너 기반의 오픈소스 가상화 플랫폼
    • 각 컨테이너 안에는 옷, 신발, 과일 등 다양한 화물 넣을 수 있고 규격화되어 컨테이너선이나 트레일러 등 다양한 운송수단으로 쉽게 운송 가능
    • 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공해 프로그램의 배포 및 관리를 단순하게 해줌
      • Backend 프로그램, DB 서버, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화 가능

컨테이너

  • 컨테이너: 격리된 공간에서 프로세스가 동작하는 기술
    • 가상화 기술 중 하나
  • 기존의 가상화 방식은 주로 OS를 가상화
    • 호스트 OS 위에 게스트 OS 전체를 가상화해 사용
      • ex) 윈도우에서 리눅스 돌리기
    • 사용법이 간단하지만 무겁고 느려서 사용 어려움
  • 성능 문제를 개선하기 위해 프로세스를 격리하는 방식 등장
    • 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작
    • cpu나 메모리를 프로세스가 필요한 만큼만 추가로 사용
    • 하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행

이미지

  • 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것
    • 상태값을 갖지 않고 변하지 않음(immutable)
      • 추가되거나 변하는 값은 컨테이너에 저장
    • 같은 이미지에서 여러 개의 컨테이너를 생성할 수 있음
    • 컨테이너의 상태가 바뀌거나 삭제돼도 이미지는 변하지 않음
  • 새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성하면 됨
    • 한 서버에 여러 개의 컨테이너 실행 가능
  • 도커 이미지는 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리 가능
  • 이미지는 url 방식으로 관리하며 태그 붙이기 가능
    • docker.io/library/ubuntu:14.04 형태로 사용
    • docker.io/library를 생략하고 ubuntu:14.04로 사용 가능
  • 이미지 생성을 위해 Dockerfile 이라는 파일에 자체 DSL 언어를 이용해 이미지 생성 과정 적음

레이어

  • 이미지는 컨테이너를 실행하기 위한 모든 정보를 갖고 있어 용량이 크다.
    • 기존 이미지에 파일 하나 추가했다고 이만큼의 용량을 다시 다운 받는다면 매우 비효율적
  • 이를 해결하기 위해 레이어 개념 사용
    • 이미지는 여러 개의 읽기 전용 레이어로 구성
    • 파일이 추가되거나 수정되면 새로운 레이어 생성
    • ex) [ubuntu 이미지] = A+B+C, [ubuntu 기반 nginx 이미지] = A+B+C+nginx
  • 컨테이너 생성 시에도 레이어 방식 사용
    • 기존 이미지 레이어 위에 읽기/쓰기 레이어 추가
    • 이미지 레이어를 그대로 사용하면서 컨테이너가 실행 중에 생성하는 파일이나 변경된 내용은 읽기/쓰기 레이어에 저장
  • 매우 효율적인 설계 방법

설치

  • 도커는 리눅스 컨테이너 기술이므로 macOS나 windows에 설치할 경우 가상머신에 설치

Linux

curl -fsSL https://get.docker.com/ | sudo sh

Mac/Windows

  • Docker for mac 또는 Docker for windows 설치
  • 파일을 다운받고 설치
    • 실제로는 가상머신에 설치 됨
    • 가상머신을 사용한다는 느낌이 안들게 신경써서 설계

Reference

  1. 초보를 위한 도커 안내서 - 도커란 무엇인가?
  2. 초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기
profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글