![Docker란 무엇입니까? AWS](https://d1.awsstatic.com/acs/characters/Logos/Docker-Logo_Horizontel_279x131.b8a5c41e56b77706656d61080f6a0217a3ba356d.png)


🤷‍♀️ Docker란?

  • 컨테이너 기반의 오픈 소스 가상화 플랫폼

  • 기존의 서버 개발, 운영의 어려움을 해결하기 위해 등장

    기존 서버의 문제점?

    • 기존의 서버는 각 단계별로 하나씩 구축
    • 어디서 문제가 생길지 모르고 관리하기가 어려움
    • 구축 환경에 따라 서버 배포가 안되는 경우가 발생하기도 함
✔ 다양한 프로그램과 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순화 하는 방법



🐳 도커의 장점

  1. 확장성과 이식성

    • 어떤 프로그램도 컨테이너로 만들 수 있고, 한 번 만들면 AWS, Azure, Google Cloud등 어디서든 돌아갈 수 있다.

    • 오픈 소스이기 때문에 특정 회사 기술에 종속적이지 않다.

  2. 표준성

    • 개발 언어에 따라서 배포하는 방식이 다 다른데, 도커를 사용하면 동일한 방식으로 배포가 가능하다.
  3. 설정 관리 편리성

    • 설정은 환경변수로 제어하는데 컨테이너에 환경 변수를 지정하여 사용할 수 있다.



❓ Docker는 가상머신인가?

  • 가상머신처럼 독립적으로 실행되지만, 훨씬 바르고 쉽고 효율적이다.

  • Virtual machine의 경우

    • OS 위에 Guest OS를 또 올리는 과정 → overhaed 발생
  • Docker의 경우

    • OS 위에 프로그램을 올리는데, 컨테이너 마다 격리된 공간을 만들어 주고 그 안에서 프로그램이 실행되는 개념

    • 격리된 컨테이너를 만들고 독립적으로 실행
    • 속도가 빠르고 성능상의 문제가 발생하지 않는다.

Screen-Shot-2018-03-20-at-9.24.09-AM

​ (이미지 출처 : https://www.netapp.com/blog/containers-vs-vms/)



➕ Dockerfile과 이미지, 컨테이너

Dockerfile

  • Docker 이미지를 빌드하는 방법을 정의하는 스크립트

  • docker build : dockerfile에서 이미지를 생성하는 명령어

도커 이미지

  • 도커 이미지가 실행하는 응용 프로그램에 필요한 소스코드, 라이브러리, 의존성 등을 포함하는 파일

  • 컨테이너를 생성하고 실행하는데 필요한 모든 파일과 설정 값을 가진다.

  • docker create : 이미지에서 컨테이너 레이어를 만드는 명령어

도커 컨테이너

  • 어플리케이션을 실행할 격리된 환경 == 컨테이너
  • 도커 이미지에 있는 소스코드, 파일, 종속성, 라이브러리 등을 사용할 수 있는 독립된 공간이 생성되는 것을 컨테이너라고 한다.

  • 이미지는 컨테이너 없이 존재할 수 있지만 컨테이너는 이미지를 실행해야 존재할 수 있다.

도커 컨테이너가 생성되는 방법

​ (이미지 출처 : https://phoenixnap.com/kb/docker-image-vs-container)



🌱 What I learn

  • 도커를 이용하면 기존의 서버 배포 어려움을 해결하고 다른 환경에서도 같은 방식으로 서버를 추구할 수 있다.
  • 프로젝트를 하면서 Back과 Front를 도커화해서 배포를 했었는데, 당시에는 도커의 장점을 제대로 이해하지 못하고 무작정 공부하고 배포를 했었다. 도커에 대해 제대로 알아보니, 서버 구축을 쉽게 할 뿐만 아니라 관리적 측면에서도 큰 장점을 가지고 있다는 것을 알 수 있었다.




Reference

subicura님의 초보를 위한 도커 안내서 강의를 수강한 후, 도커를 학습하며 작성하였습니다.

[참고 사이트]

https://www.netapp.com/blog/containers-vs-vms/

https://phoenixnap.com/kb/docker-image-vs-container