도커란 무엇일까?
도커(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 |