Docker

[Docker#1] 도커(Docker)란?

j.d 2025. 4. 29. 02:45

소프르웨어 개발과 운영 환경은 점점 더 복잡해지고 있습니다.

서로 다른 컴퓨터, 다른 환경에서도 프로그램을 똑같이 설치하고 실행할 수 있다면 얼마나 편할까요?

 

이번 글에서는 개발과 배포를 혁신적으로 바꿔준 Docker를 간단히 소개해보겠습니다.

 

출처: https://www.docker.com/company/newsroom/media-resources/

도커(Docker)란?

간단히 말하면, 컨테이너(Container)라는 기술을 이용해서 각각의 프로그램을 분리된 환경에서 설치하고 실행할 수 있게 해주는 툴입니다.

 

 

왜 도커를 많이 사용할까?

요즘 개발자나 데이터 엔지니어, 심지어 운영팀에서도 Docker를 쓰는 사례가 매우 많습니다. 여러 이유가 있지만, 그중 딱 하나만 기억해도 됩니다.

이식성 (Portability)
– 프로그램을 다른 컴퓨터에서도 쉽게 설치하고 실행할 수 있게 해주는 특성

 

친구는 MySQL을 컴퓨터에 아무 문제 없이 잘 설치했습니다. 그런데 똑같이 따라 했는데, 내 컴퓨터에서는 이상한 에러가 나기 시작합니다. 분명 같은 설치 방법을 따라 했는데도 설치가 제대로 되지 않는 상황, 한번쯤 경험해보셨을 겁니다.

그 이유는 여러 가지일 수 있습니다.

  • 친구와 나의 운영체제가 다르거나
  • 설치한 MySQL 버전이 미묘하게 다르거나
  • 내 컴퓨터에 있는 다른 보안 프로그램과 충돌이 나거나…

이런 복잡하고 번거로운 문제를 단 한 번에 해결해주는 도구가 바로 도커입니다.

Docker를 사용하면 명령어 한 줄로, 어떤 컴퓨터에서든 MySQL을 에러 없이 설치하고 실행할 수 있습니다. 복잡한 설치 과정이나 환경 차이로 인한 문제를 신경 쓸 필요가 없어집니다.

추가로 Docker를 쓰면 이런 장점도 따라옵니다:

  • 귀찮은 설치 과정을 반복할 필요가 없다
  • 항상 일관된 환경에서 프로그램을 실행할 수 있다
  • 프로그램끼리 서로 충돌하지 않고 독립적으로 실행된다

도커를 제대로 이해하기 위해서는 반드시 알아야 할 두 가지 핵심 개념이 있습니다.

 

바로 컨테이너이미지(Image)입니다.

 

 

 

 

컨테이너란?

어플리케이션과 그 실행에 필요한 모든 것을 하나로 묶어, 독립된 환경에서 실행할 수 있도록 만든 가상화된 단위 입니다.

 

조금 더 쉽게 풀어보면, 컨테이너는 프로그램을 실행하는 데 필요한 모든 것을 하나의 패키지처럼 만들어, 어떤 컴퓨터에서든 동일한 방식으로 실행할 수 있도록 해주는 독립적인 공간입니다.

 

컨테이너를 쉽게 이해하려면 미니 컴퓨터를 떠올리면 됩니다.

 

하나의 실제 컴퓨터(호스트) 안에, 각각 독립된 저장 공간과 네트워크를 가진 작은 컴퓨터(컨테이너)를 여러개 만들어 운영하는 것이라고 생각하면 됩니다.

 

이러한 특성 덕분에 각 컨테이너는 서로 간섭 없이 독립적으로 프로그램을 실행할 수 있습니다.

 

조금 더 구체적으로 보면:

 

  • 디스크(저장 공간)
    → 각 컨테이너는 자신만의 저장 공간을 가지고 있어, 다른 컨테이너 파일에 함부로 접근할 수 없습니다.
  • 네트워크(IP, 포트)
    → 각각의 컨테이너는 자기만의 IP 주소와 포트를 할당받습니다.

출처: https://www.docker.com/resources/what-container/

 

 

 

이미지란?

간단히 말하면,

이미지란 프로그램을 실행하는 데 필요한 모든 요소(코드, 설정, 라이브러리, 환경 등)를 하나로 묶어 저장한 것입니다.

 

조금 더 쉽게 이해하려면, 요리 레시피를 떠올려보세요.

 

요리를 할 때 필요한 재료와 조리법을 하나의 레시피에 모두 적어두듯이, 도커 이미지도 프로그램을 실행하는 데 필요한 모든 준비물을 하나로 정리해둔 레시피입니다.

 

이 레시피(이미지)만 있다면, 어떤 주방(컴퓨터)에서도 똑같은 재료로, 똑같은 방법으로 요리를 완성할 수 있습니다.

도커 이미지도 마찬가지로 , 어떤 환경에서 일관되게 프로그램을 설치하고 실행할 수 있도록 도와줍니다.

 

예를 들어:

 

  • MySQL 서버를 Docker 이미지로 만들어두면,
    → 이 이미지를 가져와서 바로 MySQL 서버를 실행할 수 있습니다. 복잡한 설치 과정이 필요 없습니다.
  • Node.js 기반의 Express 서버 프로젝트를 이미지로 만들어두면,
    → 이 이미지를 실행하는 순간 Express 서버가 컨테이너 안에서 바로 작동합니다.

출처: https://mvje.tistory.com/163