728x90

Udemy - 'Docker & Kubernetest : 실전 가이드' 를 베이스로 한 내용입니다.

앞으로 총 4주간 위의 강의를 듣고 정리하며 도커와 쿠버네티스에 관한 내용을 공유하도록하겠습니다.


도커란?

도커는 컨테이너라는 기술을 사용해 소프트웨어를 쉽게 만들고 관리할 수 있게 도와주는 도구입니다. 

여기서 말하는 컨테이너는 간단히 말해 소프트웨어 패키지 입니다. 

이 패키지 안에는 애플리케이션의 코드뿐만 아니라, 그 코드를 실행하는 데 필요한 모든 도구나 설정도 들어 있습니다.

예를 들어, NodeJs 애플리케이션을 도커로 만든다면, NodeJs 코드와 함께 NodeJs 실행 환경도 한 번에 묶여 들어가게 되는거죠.

이렇게 한 번 컨테이너에 담아두면, 어디서나 동일한 환경에서 그 애플리케이션을 실행 할 수 있습니다.

 

예시) 음악 앨법을 생각해보자!

- 내가 좋아하는 가수의 새로운 앨범을 발표했을때, 앨범에는 곡이 있고, 그 곡들을 들려줄 수 있는 플레이어가 필요합니다. 

만약 앨범을 특별한 패키지로 만들어 판매 한다면, 그 패키지 안에는 앨범을 들을 수 있는 플레이어와 함께, 앨범의 모든 곡이 들어가 있게 된다.

이런식으로 포장된 앨범을 다른 사람에게 주면, 그 사람은 별다른 준비 없이도 바로 앨범에 수록된 곡들을 들을 수 있습니다.

 

이게 바로 도커 컨테이너와 비슷한 개념이라고합니다. 

즉, 도커는 애플리케이션을 만들어서 그 안에 필요한 코드와 도구(예를 들어 db, runtime envir) 를 다 넣고, 그걸 쉽게 배포할 수 있게 도와줍니다. 이렇게 묶여진 app은 어디서나 동일하게 실행될 수 있습니다. 

또한 하나의 패키지로 포함되기 때문에 설치나 환경 설정에 신경 쓸 필요 없이 언제든지 바로 실행할 수 있는 장점이 있습니다.

 


왜 컨테이너가 필요할까?

영상에서 설명했지만, 도커와 컨테이너의 중요성을 좀 더 쉽게 설명 해보도록 하겠습니다.

 

예를 들어 잘 만들어진 애플리케이션이 있습니다. 이 애플리케이션은 NodeJs에서 잘 작동 되지만, 만약 이 코드를 서버에 배포할 때 서버에 구 버전 NodeJS가 설치 되어 있다면?? 

서버에서 애플리케이션이 제대로 작동하지 않을 수 있습니다. 왜냐하면 구버전의 NodeJs에서는 최신 기능이 지원하지 않기 때문입니다. 

이러한 문제를 해결하려면, 애플리케이션을 실행하느 서버의 환경이 개발 환경과 똑같아야합니다.

 

그렇다면, 여기서 도커가 도움이 됩니다. 

도커는 애플리케이션과 함께 필요한 환경을 컨테이너에 담아 움직입니다. 

즉, 어디서나 동일하게 실행됩니다. 

 

회사안, 팀원들과 프로젝트 진행중, 서로 다른 버전을 사용하므로 코드가 제대로 작동하지 않을 수 있습니다.

이럴 때 도커를 사용하면, 팀원들이 각자 같은 환경을 사용할 수 있기 때문에 호환성 문제를 줄일 수 있습니다.

또한, 각 프로젝트에서 필요한 다른 버전의 소프트웨어를 설치 해야 할 수도 있습니다.

예를 들어 자바 8 다른 프로젝트에서는 자바 11이 필요하다면, 매번 버전을 설치하고 제거하는 것이 불편합니다.

이러한 문제는 도커가 각 프로젝트를 별도의 컨테이너로 관리하게 해주므로, 프로젝트 간에 쉽게 전환 할 수 있습니다.

 

각 프로젝트가 필요한 환경을 그대로 담고 있기 때문에, 버전 충돌이나 설치 문제를 걱정할 필요가 없습니다.

 

결론 : 

 

  • 개발 환경과 운영 환경을 일치시켜서 문제를 예방한다.
  • 팀원들이 동일한 환경에서 작업하게 해준다.
  • 프로젝트 간 환경을 쉽게 전환하게 도와준다.

 

 


버추얼 머신 vs 컨테이너

버추얼 머신과 컨테이너를 비교했을 때 장점을 알아보도록 하겠습니다. 

 

버추얼 머신 (VM)은 호스트 운영 체제 위에 가상 운영 체제를 올려서 새로운 시스템을 만드는 방식

각 VM 은 별도의 운영 체제를 포함하고 있어 시스템 자원을 많이 차지하고 성능이 저하될 수 있습니다. 

또한 여러 VM을 설정하고 구성하는 것이 복잡하고, 공유나 재구축이 어려운 점이 있습니다. 

 

컨테이너 장점 : 

컨테이너는 가상 운영 체제를 전체적으로 실행하지 않고, 필요한 환경만 가볍게 캡슐화 합니다.

이를 통해 자원 소비가 적고, 빠르며, 효율적입니다. 

또한 이미지 라는 구성 파일을 사용해 동일한 환경을 다른 사람과 쉽게 공유하거나 재구축할 수 있어서 협업에 좋습니다. 

 

결론 : 

도커는 컨테이너를 효율적으로 만들고 관리하는 도구로, 버추얼 머신보다 훨씬 가볍고 빠르며 효율적인 환경을 제공합니다.

이 덕분에 여러 개발 환경을 쉽게 관리하고, 애플리케이션과 관련된 모든 것을 한 곳에 담아 움직일 수 있습니다. 

 

[참조]

도커 설치  : https://zinirun.github.io/2020/08/15/how-to-use-docker/

728x90
복사했습니다!