본문 바로가기
DevTools

[Docker] 도커란 무엇인가? 도커 한방 정리!

by 디토20 2022. 3. 25.
반응형

[Docker] 도커란 무엇인가? 도커 한방 정리!

 

우리 회사는 하드웨어 중심의 IoT 회사.

 

전체적으로 나이가 많고 (40대 이상)

개발 연구소장님이 하드웨어 부장님이라

굉장히 기술이 올드하다...

 

 

서버는 무조건 IDC 실물서버 -> 난 AWS 쓰고 싶다.

협업툴은 안돼 무조건 워드에 주간업무 보고서 -> 난 JIRA에 카드 만들고 싶다.

도커? ㅎ 꿈도 못꾸지

 

그래서 우리 회사에만 있다가는

발전이 없을 것 같아

 

개인적으로 공부해본 Docker(도커)

 

 

 

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

깃은 말안해도 알겠고, 두번째로 많이 사용하는 Dev Tool이 무려 나는 손도 못대본 Docker라고 한다.

이제는 정말 필수가 되어버린 Docker 

 

 

 

도커가 탄생한 배경

기존, 로컬에서 개발해서 실 서버에 올릴 때 소스파일만 올리는 것으로는 문제가 있었다.

js를 예로 든다면, js소스 파일을 구동하기 위해서는 npm, node.js, 각종 Dependencies등 을 설정해 줘야한다.

개발자의 PC마다, 서버마다 이 모든것들을 설치하는것은 번거롭기도 하고, 오류의 발생의 원인이 되곤 한다.

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

 

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

 

 

도커란 무엇인가?

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

컨테이너라고 불리는 하나의 작은 소프트웨어 유닛안에

우리의 어플리케이션과 그에 필요한 시스템 툴, 환경설정, 모든 디펜던시를 하나에 묶어서

다른서버, 다른피씨 그 어떤곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴이다.

 

 

 

 

어플리케이션과 어플리케이션이 구동하는데 필요한 모든 것들을 도커 컨테이너에 담아 저장 한 후,

어플리케이션을 구동하고 싶은 서버에 해당 도커 컨테이너를 다운받는다면, 어떤 PC에서도 동일하게 구동할 수 있다.

 

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

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

 

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

 

 

 

 

도커 VS VM

 

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

(좌) VM, (우) Docker

VM : 하드웨어 위에 올라가는 vmware나 VirtualBox 같은 Hypervisor을 이용해 독립적인 가상의 머신을 만들 수 있다. 동일한 어플리케이션을 다양한 OS위에서 구동하기 위한 소프트웨어로, 각각의 VM에는 OS가 올라가기 때문에 굉장히 무겁고 느리다.

 

Docker : 하드웨어에 설치된 운영체제에 Container Engine이라는 소프트웨어를 설치해 개별적인 Container를 만들어 각각의 어플리케이션을 고립된 환경에서 구동할 수 있게 해준다. 여기서 가장 많이 사용되는 Container Engine이 바로 Docker! VM의 경량화 버전이라고 생각하면 됨.

 

 

 

 

 

컨테이너를 만드는 방법

컨테이너 사용하기 위해서는 만들기 위해서는 총 세가지가 필요 : 도커파일, 이미지, 컨테이너

도커파일을 만들어서 이걸로 이미지를 만들고 만들어진 이미지로 컨테이너를 구동 할 수 있다.

 

1. Dockerfile : 컨테이너를 어떻게 만들어야 하는지에 대한 설명서. 아래와 같은 내용을 포함하고 있다.

- 어플리케이션을 구동하기 위한 파일은 무엇이 있는가?

- 어떤 dependencies를 다운받아야 하는가?

- 필요한 환경변수

- 어떻게 구동해야하는지에 대한 script

 

 

2. Image : 어플리케이션을 실행하는데 필요한 코드, 런타임, 환경, 시스템 툴, 시스템 라이브러리등이 포함

실행되고 있는 어플리케이션의 상태를 찰칵- 해서 이미지로 만들어둔다고 생각하면 된다!

*한번 만들어지면 변경이 불가능*

 

 

3. Container : Image를 고립된 환경에서 개별적인 시스템 안에서 실행할 수 있는 공간

container 안에서 image를 이용해 우리의 어플리케이션이 구동한다.

 

 

 

 

 

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

깃과 깃허브를 사용해봤다면 익숙 할테다

1. 내 로컬에서 만든 이미지를 Container Registry에 Push

2. 서버는 Container Registry에서 이미지를 Pull 로 당겨와서 사용한다.

3. 서버에는 Docker 설치 필수!

 

 

 

Docker의 종류

도커는 publicprivate이 있다.

개인 사용자들은 docker hub를 가장 많이 사용하고 있지만

회사에서는 private한 docker를 사용하는데, aws나 google Cloud등에서 docker 서비스를 제공하고 있다.

 

 

 

 

 

총정리

1. 사용자는 Local에 Docker를 설치한 후 Dockerfile을 만든다.

2. Dockerfile을 build 시켜 Image로 만든다.

3. 만든 Image를 Container Registry에 Push

4. 실서버에 Docker를 설치 한 후 Container Registry에서 Image를 Pull 한다.

5. Docker에서 Image를 run 한다.

 

 

 

 

 

 

 

 

 

 

 

참고 : 드림코딩 by 엘리 https://youtu.be/LXJhA3VWXFA

 

728x90
반응형

댓글