DevOps-Docker-01-도커 개념

SeungWoo Yoo ·2023년 2월 7일

DevOps-Docker

목록 보기
1/1

1. 사람들이 많이 사용하는 Dev Tools

Docker_1_1

Git에 이어, 두번째로 많이 사용하는 Dev Tool은 Docker이다.
이제는 정말 필수가 되어버린 Docker


2. 도커가 탄생한 배경

기존, 로컬에서 개발해서 실 서버에 올릴 때 소스파일만 올리는 것으로는 문제가 있었다.
js를 예로 든다면, js소스 파일을 구동하기 위해서는 npm, node.js, 각종 Dependencies등 을 설정 해야한다.
개발자의 PC마다, 서버마다 이 모든것들을 설치하는것은 번거롭기도 하고, 오류의 발생의 원인이 되곤 한다.

Docker_1_2

내 서버에 node.js가 있고 서버에도 node.js가 있으니 내 서버에서 개발한 js 파일을 서버에 배포하면 자동으로 동작하겠지?
배포 → 에러가 발생 → 내 PC에선 잘되는데 서버에선 왜 안돼!!! -> node.js의 버전이 맞지 않기 때문에 발생

이러한 문제점을 해결하기 위해 Docker가 탄생!


3. 도커란 무엇인가?

도커란 어플리케이션을 패키징 할 수 있는 툴

Docker_1_3

컨테이너라고 불리는 하나의 작은 소프트웨어 유닛안에,
우리의 어플리케이션과 그에 필요한 시스템 툴, 환경설정, 모든 디펜던시를 하나에 묶어서,
다른 서버, 다른 PC 그 어떤곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴이다.

Docker_1_4

어플리케이션과 어플리케이션이 구동하는데 필요한 모든 것들을 도커 컨테이너에 담아 저장한 후,
어플리케이션을 구동하고 싶은 서버에 해당 도커 컨테이너를 다운받는다면, 어떤 PC에서도 동일하게 구동할 수 있다.

  1. 내 PC에서는 되는데 왜 니 PC에서는 안되니?

  2. 어플리케이션을 구동하는데 필요한 이것 저것들을 설정하고 준비해야하는 번거로움

    을 해결해주는 정말 유용한 패키징 툴이다.


4. 도커 VS VM

뭐야.. 그럼 VM이랑 비슷한거 아니야?

Docker_1_5

(좌) VM, (우) Docker

  • VM
    • 하드웨어 위에 올라가는 vmware나 VirtualBox 같은 Hypervisor을 이용해 독립적인 가상의 머신을 만들 수 있다.
    • 동일한 어플리케이션을 다양한 OS위에서 구동하기 위한 소프트웨어로,
    • 각각의 VM에는 OS가 포함되어 올라가기 때문에 굉장히 무겁고 느리다.
  • Docker
    • 하드웨어에 설치된 운영체제에 Container Engine이라는 소프트웨어를 설치해 개별적인 Container를 만들어,
    • 각각의 어플리케이션을 고립된 환경에서 구동
    • 여기서 가장 많이 사용되는 Container Engine이 바로 Docker!
    • VM의 경량화 버전이라고 생각하면 됨.

5. 컨테이너를 만드는 방법

Docker_1_6

컨테이너 사용하기 위해서는 만들기 위해서는 총 3가지가 필요 : 도커파일, 이미지, 컨테이너
도커파일을 만들어서 이걸로 이미지를 만들고 만들어진 이미지로 컨테이너를 구동 할 수 있다.

  1. Dockerfile : 컨테이너를 어떻게 만들어야 하는지에 대한 설명서. 아래와 같은 내용을 포함
    • 어플리케이션을 구동하기 위한 파일은 무엇이 있는가?
    • 어떤 dependencies를 다운받아야 하는가?
    • 필요한 환경변수
    • 어떻게 구동해야하는지에 대한 script
  2. Image : 어플리케이션을 실행하는데 필요한 코드, 런타임, 환경, 시스템 툴, 시스템 라이브러리등이 포함
    • 실행되고 있는 어플리케이션의 상태를 찰칵- 해서 이미지로 만들어둔다고 생각하면 된다!
    • 한번 만들어지면 변경이 불가능
  3. Container : Image를 고립된 환경에서 개별적인 시스템 안에서 실행할 수 있는 공간
    • container 안에서 image를 이용해 우리의 어플리케이션이 구동한다.

6. 어떻게 Cotainer 배포할 수 있나?

어떻게 Cotainer 배포할 수 있나? = 어떻게 Image를 공유할 수 있나?

Git과 GitHub를 사용해봤다면 익숙할테다.

Docker_1_7

  1. 내 로컬에서 만든 이미지를 Container Registry에 Push
  2. 서버는 Container Registry에서 이미지를 Pull로 당겨와서 사용한다.
  3. 서버에는 Docker 설치 필수!

7. Docker의 종류

Docker_1_8

도커는 publicprivate이 있다.
개인 사용자들은 docker hub를 가장 많이 사용하고 있지만,
회사에서는 private한 docker를 사용하는데, aws나 google Cloud등에서 docker 서비스를 제공하고 있다.


8. 총정리

Docker_1_9

  1. 사용자는 Local에 Docker를 설치한 후 Dockerfile을 만든다.
  2. Dockerfile을 build 시켜 Image로 만든다.
  3. 만든 Image를 Container Registry에 Push
  4. 실서버에 Docker를 설치한 후 Container Registry에서 Image를 Pull 한다.
  5. Docker에서 Image를 run한다.

실습 및 참고

https://www.youtube.com/watch?v=LXJhA3VWXFA&t=553s

profile
Front-end 공부 중... 책 읽는 걸 좋아합니다.

0개의 댓글