Deployment/Docker

Docker란 무엇인가

연향동큰손 2025. 3. 19. 16:56

 

도커란 무엇일까?

 

도커(Docker) 컨테이너 기반 가상화 플랫폼으로, 응용 프로그램과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행하는 기술이다. 

 

 

도커를 왜 사용하나

 

Docker의 가장큰 장점은 이식성에 있다.

 

🎯 이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성

 

배포를 해보면 로컬 환경에서는 실행이 잘 되던 프로그램이 배포환경에서는 잘 안돌아가는 경험을 할때가 있다.

 

이러한 문제의 원인은 다음과 같을 수 있다.

  • OS 환경 차이
  • 라이브러리 버전 차이
  • 의존성 문제

이러한 문제를 도커가 아주 간편하게 해결해줄 수 있는데,

 

 

Docker는 실행 환경을 아예 패키지로 묶어서 어디서 실행해도 똑같이 동작하도록 해줌으로써 로컬 환경과 똑같은 환경에서 실행할 수 있도록 하여 오류 없이 프로그램이 실행되게 해준다.

 

 

 

뿐만 아니라 Docker를 사용하면 아래와 같은 장점이 있다.

  • 매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다.
  • 각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않는다.

 

Docker 관련 용어

 

1. 컨테이너(Container)

🎯 컨테이너란 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념이다.

 

컨테이너’와 ‘컨테이너를 포함하고 있는 컴퓨터’를 구분하기 위해 컨테이너를 포함하고 있는 컴퓨터를 호스트(host) 컴퓨터라고 부른다.

 

각각의 컨테이너는 독립성을 가진다.

컨테이너(Container)의 독립성

  • 디스크 (저장 공간) : 각 컨테이너마다 서로 각자의 저장 공간을 가지고 있다. 일반적으로 A 컨테이너 내부에서 B 컨테이너 내부에 있는 파일에 접근할 수 없다.
  • 네트워크 (IP, Port) : 각 컨테이너마다 고유의 네트워크를 가지고 있다. 컨테이너는 각자의 IP 주소를 가지고 있다.

 

 

2. 이미지(Image)

🎯 이미지는 컨테이너를 실행하기 위한 실행 환경과 애플리케이션 코드, 필요한 설정, 의존성, 라이브러리 등을 모두 포함한 "설계도" 라고 보면 된다.

 

만약 내가 스프링부트를 사용하여 웹 페이지를 만들었다면 이미지가 될 수 있는것은 다음과 같다.

 

  • 기본 OS + JDK
  • 너의 스프링 프로젝트 빌드 결과물 (JAR 파일)
  • 컨테이너 실행 시 JAR 파일을 실행하도록 하는 설정

 

 

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

Docker Volume(도커 볼륨)  (0) 2025.03.23
Docker CLI  (0) 2025.03.21
Docker를 활용하여 Nginx 설치 및 실행  (0) 2025.03.19