IT지식/Computer Science

컨테이너와 도커에 대해서 알아보고 최신 개발 트렌드 따라잡자

맨땅에헤딩개발자 2024. 12. 28. 18:09

이번 글은 요즘 개발자들 사이에서 가장 많이 이용되고있는 도커에 대해서 알아보자.

 

도커(docker)란?

어플리케이션 실행에 필요한 모든 리소스들을 도커안의 컨테이너에 담아놓고 관리하는 툴입니다.

 

그렇다면 컨테이너는 무엇인가?

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

 

어플리케이션을 실행하기 위해서는 소스코드뿐만 아니라 환경설정도 중요한데요

자신의 컴퓨터에서 돌아가는 어플리케이션이 왜 서버에서 실행을 하면 안되는 문제를 해결하기 위해

 

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

 

위의 그림과 같이 컨테이너 내부에 어플리케이션의 실행에 필요한 모든 리소스를 통으로 넣어 저장하는 것이다.

 

 

이렇게 도커를 이용하면 개인 컴퓨터와 서버간의 환경설정의 차이 없이 동일하게 어플리케이션을 실행할 수 있습니다.

 

그렇다면 도커의 컨테이너와 VM이 같은 것 아닌가요? 라고 질문할 수 있는데

 

 

 

 

 

도커와 VM(Virtual Machine) 의 차이

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


위의 사진을 보면 왼쪽이 VM이고 오른쪽이 Container를 이용한 방식입니다.

 

VM은 하드웨어 인프라환경 위에 Hypervisor(vmware, virtualBox 등)의 소프트웨어를 이용하여 가상의 머신을

만들 수 있습니다. 한 어플리케이션을 각각 다른 환경에서 구동을 하기 위해선 가상머신을 이용하여 환경에 맞는 OS를 설치해줘야 했어서 상당히 무겁습니다.

 

Container는 VM에서 좀 더 경량화 되었다고 볼 수 있는데요

각각 상대 OS위에 ContainerEngine(docker 등)만 설치해주면 각각 다른 환경에서 어플리케이션을 실행할 수 있습니다.

 

 

 

 

Docker의 3대 구성요소에 대해 알아보자

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

 

1. Dockerfile

 

도커파일은 컨테이너를 어떻게 만들어야 하는지에 대한 레시피같은 느낌인데요

- 어플리케이션을 구동하기 위해서 꼭 필요한 파일들은 무엇이 있는지

- 어떤 프레임워크나 라이브러리를 설치해야 하는지

- 필요한 환경변수에 대한 설정

- 어떻게 구동해야하는지에 대한 스크립트

 

 

 

2. Image

 

어플리케이션을 실행하는데 필요한 코드, 런타임환경, 시스템 툴, 시스템 라이브러리 등 모든 셋팅들이 포함되어 있습니다.

 

 

 

3. Container

 

만들어놓은 이미지(어플리케이션)을 컨테이너 내부에서 실행할 수 있습니다.

 

 

 

최종적으로

위의 그림과 같이 개인pc에서 어플리케이션 실행에 필요한 Image를 생성한 후 Container Registry에 커밋하고

커밋한 Image를 서버에서 땡겨받아 실행할 수 있고 그 과정을 도커라는 컨테이너 엔진이 관여합니다.

 

 

위 글은 드림코딩이라는 유튜버분의 강의를 참고하여 작성되었습니다.

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