Programming/Cloud,Infra

[Infra] "제 컴퓨터에서는 되는데요?" 금지 - Docker 란?

_채채_ 2026. 7. 21. 23:39

개발을 하다보면 한 번쯤 이런 상황을 겪게 된다. 내 로컬에서는 분명 잘 돌아가던 코드가 팀원의 컴퓨터나 서버에 올리는 순간 갑자기 오류가 난다거나.. 아마 이유는 단순하고 다양할 것이다. Java 버전이 다르거나, 환경변수가 빠져있다거나, OS가 다르거나. 이러한 문제를 해결하기 위해 등장한 것이 Docekr이다.

🤔 Docker 란?

Docker는 애플리케이션을 컨테이너화하여 가볍고 이식성 있는 패키지로 실행할 수 있게 해주는 소프트웨어 플랫폼이다.

주요한 특징으로는 아래와 같다.

  • 컨테이너화
  • 경량
  • 이식성
  • 확장성

❓ 언제 사용할까?

  • 일관된 개발 환경이 필요할 때
    • 위에서도 설명했듯이 개발이나 테스트, 운영 환경이 다를 때 발생하는 문제를 피하고자 할 때 사용하면 좋다.
  • 빠르게 배포하고 싶을 때
    • 개발 환경과 동일한 모든 구성 요소가 포함된 이미지를 빌드하고 실행하므로 별도의 설치 과정 없이 바로 실행할 수 있다.
  • MSA 도입 시
    • 도커에 대한 설명을 간략하게만 들어봐도 MSA 도입 시 유용할 것이라는 생각이 든다. 각 서비스가 독립적으로 배포되고 실행될 수 있는 특성 상 여러 개의 컨테이너를 통해 서비스들을 쉽게 관리할 수 있다.
  • 쿠버네티스와 함께 사용하고자 할 때
    • 도커는 필요한 만큼 컨테이너를 추가하거나 수평 확장이 가능한데, 오케스트레이션 도구와 결합하여 자동 확장도 가능하다. 대표적으로 쿠버네티스와 함께 사용하기 좋은데, 이는 쿠버네티스가 다수의 컨테이너를 관리하고 자동 배포, 운영 등을 지원하기 때문이다.

그 외에도 CI/CD 환경을 구축할 때나 스케일링하고자 할 때 등 여러 가지 목적과 상황에 맞게 사용할 수 있다. 

 

✳️ 관련 용어

도커는 편리한 만큼 관련 단어들에 대한 지식이 있어야 잘 활용할 수 있는 것 같다. 아래에 짧게 정리해보려고 한다.

  • 이미지: 도커 컨테이너를 생성하기 위한 청사진이다. 위에서 설명했듯이 애플리케이션과 실행에 필요한 것들을 포함한다.
  • 컨테이너: 컨테이너는 도커 이미지를 실행한 상태 그자체이다. 이미지는 정적 템플릿, 컨테이너는 동적 환경이라고 할 수 있다.
  • Dockerfile: 도커 이미지를 생성하기 위한 스크립트이다. 이미지 빌드를 위한 명령어들을 작성해놓은 파일이고, 이미지 생성 과정을 자동화할 수 있게해준다.
  • 볼륨: 데이터의 영속성을 지켜주는 역할을 한다. 즉, 컨테이너가 삭제되더라도 볼륨에 저장된 데이터는 지속된다. 컨테이너와는 독립적으로 관리된다.
  • 네트워크: 컨테이너 간의 통신을 관리하는 방식이다. 기본적으로는 브리지 네트워크를 통해 동일 네트워크에 연결된 컨테이너들끼리는 통신할 수 있다.