Giter Club home page Giter Club logo

docker's Introduction

Docker

Docker란 무엇인가?

독립적인 환경을 만들어서 하드웨어를 효율적으로 관리할 수 있게 도와주는 소프트웨어?

  • 여기서 말하는 독립적인 환경은 컨테이너라 부릅니다.

컨테이너?

각각의 컨테이너는 플랫폼을 가리지 않고 실행이 가능합니다.

  • 그렇다면 컨테이너는 가상머신인가? (그렇지 않습니다.)
    • 가상머신처럼 독립적으로 실행가능합니다.
    • 가상머신보다 빠릅니다.
    • 가상머신보다 쉽습니다.
    • 가상머신보다 효율적입니다.

어떻게 등장하게 되었을까?

  • 문서 관리
    • 서버를 운영하기 위해서 문서로 서버 운영 방법을 기록 -> 시간이 흘러 문서의 정확성
    • 서버 업데이트와 관련된 이력들을 관리하기가 힘들어지는 문제가 있습니다.
  • 상태 관리 도구
    • 프로그램을 실행할 때 프로그램이 참조하는 설정 파일을 코드로 작성하여 협업도 하고 버전도 관리할 수 있었습니다.
    • 단점은 러닝커브가 높고, 한 서버에서 다른 버전 여러개를 설치하는게 어려웠습니다.
  • 가상 머신
    • 가상 머신은 한 서버에 여러개 설치가 쉽습니다.
    • 현재 상태를 저장할 수 있습니다.
    • 처음부터 다시 세팅하려면 어떻게 해야할까요?
    • 서버 이미지 공유가 어렵습니다. (용량 이슈...)
    • 속도가 느립니다.
  • 자원 격리
    • 프로세스를 가상으로 분리합니다.(기술적 X)
    • 파일, 디렉토리도 가상으로 분리합니다.
    • CPU, Memory, I/O 그룹별로 제어합니다.
    • 리눅스 기능을 이용한 빠르고 효율적인 서버 관리방법입니다.
    • 사용 방법이 너무 어렵습니다.
    • 구글과 같은 대형 기업에서만 사용 가능해보입니다.

Docker 두두등장

2013년에 DotCloud에서 첫 공개했습니다.

  • 컨테이너 격리된 환경에서 작동하는 프로세스
  • 리눅스 커널의 여러기술을 활용합니다.
  • 하드웨어 가상화 기술보다 가볍습니다.
  • 이미지 단위로 프로세스 실행환경을 구성합니다.

도커 특징

  • 확장성/이식성

    • 도커가 설치되어 있다면 어디서든 �컨테이너를 실행할 수 있습니다.
    • 서비스에 종속적이지 않습니다.
    • 쉽게 개발자가 만들 수 있습니다.
  • 표준성

    • 언어마다 서비스들의 배포 방식이 제각각 다릅니다.
    • 컨테이너라는 표준으로 서버를 배포하므로 동일한 운영이 가능합니다.
  • 이미지

    • 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요
    • Dockerfile 이미지를 만들고 처음부터 재현이 가능합니다.
    • 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영서버에서 이미지를 불러옵니다.
  • 설정관리

    • 설정은 보통 환경변수로 제어합니다.
    • 컨테이너를 띄울때 환경 변수를 같이 지정합니다.
  • 자원관리

    • 컨테이너는 삭제후 새로 만들면 모든 데이터가 초기화됩니다.
    • 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3같은 별도의 저장소가 필요합니다.
    • 세션이나 캐시를 memcached나 redis와 같은 외부로 분리합니다.

도커가 가져온 변화

  • 클라우드 이미지 보다 관리가 쉽습니다.
  • 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하가 적습니다.
  • 복잡한 기술을 몰라도 사용이 가능합니다.
  • 이미지 빌드 기록이 남습니다.
  • 코드와 설정으로 관리되기 때문에 재현 및 수정이 가능합니다.
  • 오픈소스기 때문에 특정 회사 기술에 종속적이지 않습니다.

docker's People

Contributors

anjonggil avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.