Docker란?

죽난
|2024. 9. 4. 21:57

 

최근에 MLOps를 공부하면서 Kubernetes에 학습하는데 뭔가 이해가 완벽히 되지 않았다. Base가 되는 Docker를 제대로 모르고 있어서 그렇다고 생각을 하고 Docker에 대해 정리를 해본다.

 

Docker를 정확히 알고 있는건 분명히 아닌 거 같다. 그저 사용하던 명령어만 기계처럼 쓰는 느낌이 강한데 명령어 하나하나를 이해하고 난 후에는 Docker에 대해 어느 정도는 알게 된 것 같다.

 

🐳 Docker란?

Docker 공식 문서를 보면 Docker는 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 플랫폼이라고 설명한다. 또한, Docker를 사용하면 개발자들이 애플리케이션을 더 쉽게 만들고, 배포하고, 실행할 수 있으며, 운영팀은 일관된 환경에서 애플리케이션을 관리할 수 있다고 설명한다.

 

📜 Docker의 필요성

Docker의 필요성을 느끼지 못하면 위의 말이 와닿지는 않을 것 같다. 우선 Docker가 왜 필요한 이유는 다음과 같다.

 

  • 환경 일관성 문제 해결

내 컴퓨터에서는 잘 돌아가는데 문제를 해결할 수 있다. 똑같은 명령어를 실행해도 어떤 PC는 문제 없이 실행되고 어떤 PC는 문제가 발생하는 상황이 있는데 Docker를 사용하면 모든 환경에서 동일한 실행 조건을 보장할 수 있다.

 

  • 빠른 개발 및 배포

애플리케이션과 그 종속성을 하나의 패키지로 만들기 때문에 빠르게 배포할 수가 있다.

 

  • 리소스 효율성

Virtual Box 같은 가상 머신에 비해 Docker 컨테이너는 더 적은 리소스를 사용하며, 빠르게 시작하고 중지할 수가 있어 하드웨어 리소스를 더욱 효율적으로 사용할 수 있다.

 

  • 마이크로서비스 아키텍처 지원

각 서비스를 독립적인 컨테이너로 실행할 수 있어, 복잡한 애플리케이션을 더 쉽게 관리하고 확장할 수 있다.

이 외에도 Docker의 필요성은 다양하다. (버전 관리 용이성, 개발 및 운영 프로세스 표준화, 클라우드 및 하이브리드 환경 지원 등등)

 

🎶 Docker의 핵심 구성 요소

Docker의 핵심 요소는 다음과 같다.

  • Docker Hub
  • Docker Image
  • Docker container

3가지 요소를 이해할 때 아래 그림을 통해 이해하면 쉽다.

 

우리가 컴퓨터에서 프로그램을 다운받으려면 App store 등에 들어가서 찾는 것처럼 Docker에는 Docekr hub이라는 사이트가 있다.

 

Docker hub에는 다른 사람들이 올려놓은 Docker image들이 존재한다. App store에서 program을 설치하는 것처럼 Docker hub에서 Docker Image를 Pull 하여 다운받을 수 있다.

 

Program을 실행하면 Process가 되듯이 Image를 run 하면 Container로 동작하며 하나의 Docker Image에 여러 개의 Docker container가 생성될 수 있다.

 

 

⛳ 마치며

Docker와 같은 기술은 글로만 완벽히 이해하기 어렵다고 생각한다. `Docker란?`이라는 키워드로 구글에서 많은 글을 읽었지만, 실제로 명령어를 직접 입력하고 실행해 보는 것과는 큰 차이가 있었다. 자주 사용하는 명령어들을 단순히 외워서 사용하는 것보다는 Docker의 기본 개념과 원리에 대한 배경지식을 갖추는 것이 중요하다고 생각한다. 해당 강의를 통해 직접 실습해보면서 Docker에 대한 이해도를 크게 높일 수 있었다.

 

📄 참고 자료

https://docs.docker.com/get-started/docker-overview/

https://opentutorials.org/course/4781

https://www.youtube.com/playlist?list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf

'Programming > Docker' 카테고리의 다른 글

Docker 이미지 공유하기  (1) 2024.10.01
Docker 이미지 만들기  (3) 2024.09.30
Docker 설치 및 사용법  (1) 2024.09.20
딥러닝 개발용 Docker 이미지 생성  (0) 2023.12.29