Docker 기본 개념

도커란

어플리케이션을 패키징 할 수 있는 툴이다.

컨테이너라고 불리는 하나의 작은 소프트웨어 유닛 안에 어플리케이션과 어플리케이션에 필요한 환경설정 등을 하나로 묶어서
다른 PC에서도 안정적으로 돌아갈 수 있도록 도와주는 툴이다.

어플리케이션이 필요한 모든 소스들을 도커 컨테이너 안에 담는 것이다.

(컨테이너 - 어플리케이션을 고립된 환경에서 구동하는 단위)

도커를 사용하는 이유

사람마다 개발 환경이 다른데, 도커를 사용하면 개발 환경과 운영 환경 사이의 차이로 인한 문제를 줄일 수 있다.

내 PC에서는 잘 돌아가던게 다른 사람 PC에서는 돌아가지 않는 경우가 발생할 수 있는데,

도커 사용으로 이런 문제를 해결할 수 있다.

또한 이것저것 설치하고 설정해줘야하는 번거로움을 해결해준다!

VM(가상머신) vs Container

- VM

호스트 운영체제 위에 독립된 가상환경을 생성하고 전체 운영체제를 가상화하여 각각의 가상 머신이 독립적으로 운영체제를 실행한다.

이는 메모리와 디스크 공간을 많이 소비해서 실행속도가 느리고 메모리를 많이 사용하기 때문에 비효율적이다.

맥이라는 OS 위에서 윈도우와 리눅스를 구동할 수 있는 것이다.(무거워..)

 

- Container

VM에서 조금 경량화된 것이 컨테이너이다.

컨테이너는 컨테이너 엔진에 설치된 호스트 운영체제의 커널을 공유한다.

이는 더 가볍고 빠르며 리소스를 효율적으로 사용한다.

컨테이너 엔진을 설치하면 개별적인 컨테이너를 만들어서 각 어플리케이션을 고립된 환경에서 구동할 수 있게 해준다.

 => VM은 OS를 포함하고 컨테이너는 OS를 포함하지 않는다는게 가장 큰 차이점이다.

 

컨테이너 엔진 중에 가장 유명한 것이 도커인 것이다.

따라서 도커 컨테이너는 가볍고 빠르게 실행될 뿐만 아니라 어플리케이션 배포와 관리를 더 효율적으로 처리할 수 있도록 해준다.

 

도커의 3대 구성요소

1. Dockerfile

컨테이너를 어떻게 만들어야하는지를 적어놓은 설명서 같은 것이다.

어플리케이션을 구동하기 위해 꼭 필요한 파일은 무엇인지, 어떤 프레임워크나 라이브러리를 설치해야 하는지,

필요한 환경변수 설정이나 어떻게 구동해야 하는지에 대한 것을 포함한다.

 

2. Image

이렇게 작성한 Dockerfile을 이용해서 Image를 만든다.

실행되고 있는 어플리케이션의 상태를 사진으로 찍어서 이미지로 만들어둔다고 생각하면 쉽다.

이렇게 만들어진 Image는 변경이 불가능한 상태이다.

 

3. Container

Image를 고립된 환경에서 실행할 수 있도록 해준다.

컨테이너 안에서 어플리케이션이 구동한다고 보면 된다.

 

도커 사용법 총정리

  1. Local Machine과 Server에 도커를 설치한다.
  2. Dockerfile 작성 후, Image를 만든다.
  3. Image를 Container Registry에 올린다.
  4. 서버에서 다운로드 받아서 컨테이너를 실행한다.

 

https://www.youtube.com/watch?v=LXJhA3VWXFA