코로 넘어져도 헤딩만 하면 그만

Docker에 대해 알아보기 본문

스터디/야 나두(새로운 기술 학습) - 2023.08~

Docker에 대해 알아보기

꼬드리 2024. 5. 29. 13:35

도커 설치는 이쪽으로! https://www.docker.com/

 

Application, 툴, 의존성을 전부 하나에 담아줄 수 있는 도구. Docker은 부둣가에서 짐을 옮겨주던 사람을 일컫는다.

 

기존까지는 서로 다른 서버나 컴퓨터마다 node.js, npm 등을 개발자가 설정해주어야 했다. 이 귀찮은 과정에서 버전 충돌이 생기기도 하고, 원치 않게 오류가 발생하는 일이 잦았다.

 

이러한 문제를 해결하기 위해 도커 Docker가 등장했다.

 

 

 

🍬컨테이너와 도커?

컨테이너Container 안에는 앱 뿐만 아니라 앱이 구동하는 데에 필요한 node.js, 환경 설정, assets 등 모든 것이 포함된다. 즉 서로 다른 서버나 pc에서도 다른 환경이라서 발생하던 에러가 더는 발생하지 않는다. 

 

물론 가상머신(vm)을 사용하여 가상화로 해결하는 방식이 있었다. 하지만 vm은 운영체제 가상화를 포함했다면, 이후 vm을 대체하게 된 컨테이너 기술은 운영체제를 설치하지 않아서 보다 가볍게 다룰 수 있게 되었다.

기본적으로 컨테이너 구동을 위해서는 컨테이너 엔진이 필요하며 이러한 엔진 중 가장 많이 사랑받는 것이 바로 ‘도커’다.

따라서 도커를 제대로 사용하기 위해서는 컨테이너를 만들고, 구동하고, 배포하는 과정을 거친다.

 

 

🚩그렇다면 컨테이너는 어떻게 제작하는가?

도커로 컨테이너 제작을 하기 위해서는 기본적으로 3가지가 필요하다: 도커 파일, 이미지, 컨테이너

 

  • 도커 파일: 컨테이너를 어떻게 만드는지에 대한 설명서다. 앱에 필요한 파일들이 뭐가 있는지, 어떤 라이브러리를 설치해야 하는지, 환경 변수, 어떻게 구동하는지 설명하는 스크립트 등이 포함된다.
  • 이미지: 이미지 안에 앱을 실행하는 데에 필요한 코드나 세팅이 포함된다. 실행되고 있는 앱의 스냅샷과 비슷하며, 불변의 상태라고 부른다. = 즉, Class 개념과 유사하다. 
  • 컨테이너: 캡쳐해둔 앱의 이미지를 고립된 환경에서 개별적으로 실행할 수 있게 해준다. Class로 여러 Instance를 찍어내듯이 하나의 이미지를 이용하여 각각의 컨테이너를 만들 수 있다. 각각의 컨테이너에서 수정된 부분이 있다면, 이는 이미지에는 반영되지 않는다.

 

🚩컨테이너 배포는 어떻게 이루어질까?

내 로컬 머신에서 앱을 스냅샷한 이미지를 만들어, git Hub 같은 컨테이너 레지스터리 쪽으로 푸시한다. 이후 다른 곳에서 이렇게 올려둔 이미지를 가져와서 사용하게 된다. 보통 개발자들이 쓰는 public으로는 doker hub, GitHub Packages 등이 있으며 회사에서는 보안을 위해 private한 aws, google cloud를 사용하는 추세라고 한다.

 


 

도커가 모든 사람을 위한 도구는 아니라지만, 개발자라면 컨테이너의 등장배경과 필요성을 이해하는 것이 중요해보인다.

environment disparty 라는 고질적인 개발 환경의 문제를 도커가 깔끔하게 해결해주었기 때문이다. 즉 자신과 다른 머신에서도 자신과 똑같은 환경을 구현해주고, 만든 도커 이미지 파일을 서버와 컴퓨터 둘 모두에 설치해서 사용할 수 있다.

 

 

TIP. 도커의 컨테이너들은 독립적이다. 하나의 서버에서도 다양한 컨테이너들을 가질 수 있다. 

도커에 대해 요약하자면 아래와 같다.

  1. 원하는 개발 환경을 파일에 저장한다. 그럼 도커는 어떤 머신에든 해당 환경을 시뮬레이션 해준다.
  2. 이 환경들은 독립적이라서 모듈식으로 관리가 가능하다.
Comments