Docker란?
도커는 '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어다.
애플리케이션을 컨테이너라는 단위로 패키징하고 실행할 수 있도록 도와주는 가상화 기술을 제공한다.
한마디로 어떤 환경에서도 동일하게 실행되는 프로그램을 만들기 위한 도구다.
도커가 필요한 이유
설정 변경의 번거로움
개발하고 배포할 때 제일 귀찮았던 부분은 내 PC에서는 잘 되게 설정해 놨는데, 배포서버에서 동작하게 하려면 설정을 바꿔줘야 하는 부분이었다.
왜 설정을 바꿔줘야 하나? 운영체제, 라이브러리 등이 다르기 때문이다.
컨테이너를 사용하면 개발자가 설정한 환경 그대로 유지할 수 있어서 어디서 실행하든 동일한 결과를 보장할 수 있다.
프로그램 격리의 필요성
도커가 주로 서버에서 프로그램과 데이터를 격리하는 기능을 제공한다고 했는데 왜 프로그램끼리 격리가 필요할까? 에 대해 생각해 볼 필요가 있다.
소프트웨어는 보통 단독으로 동작하는 것이 아닌 실행 환경, 라이브러리, 다른 프로그램을 통해서 동작하는 경우가 대부분이다.
예를 들어 A 프로그램은 C 프로그램의 5.0 버전이 요구되고 B 프로그램은 C 프로그램의 6.0 버전이 요구된다고 치자.
일반적으로 같은 컴퓨터엔 하나의 프로그램만 설치할 수 있으므로 A만을 위해 5.0 버전을 설치하면 B가 오류가 발생하게 될 것이다.
이러한 오류를 해결하기 위해 프로그램 격리가 필요한 것이다.
컨테이너와 다른 컨테이너는 완전히 분리된 환경이기 때문에 컨테이너 안에 들어있는 프로그램은 다른 프로그램과 격리된 상태라 각 컨테이너에 C 프로그램의 5.0 버전 6.0 버전을 각각 설치하면 될 것이다.
도커 vs 가상머신
두 기술 모두 애플리케이션을 격리된 환경에서 실행할 수 있게 하지만, 차이점이 있다.
구분 | 가상머신 | 도커 |
실행방식 | 각 VM이 개별 운영 체제를 실행 | 하나의 OS에서 여러 컨테이너 실행 |
속도 | 무겁고 부팅 시간이 길다 | 가볍고 빠르게 실행 가능 |
리소스 사용량 | 높은 CPU, 메모리 사용 | 적은 자원으로 실행 가능 |
배포 용이성 | 환경 설정이 다르면 오류 발생 가능 | 동일한 환경에서 배포 가능 |
도커의 핵심 개념
1. 컨테이너 (Container)
컨테이너는 애플리케이션과 그 실행에 필요한 모든 파일을 포함한 가볍게 독립적인 실행환경이다.
이를 통해 어디서든 동일한 환경에서 프로그램을 실행할 수 있다.
2. 이미지 (Image)
컨테이너를 실행하기 위한 템플릿이다.
이미지는 컨테이너의 상태를 저장하고, 여러 개의 컨테이너를 동일한 이미지에서 생성할 수 있다.
3.Dockerfile
도커 이미지를 만들기 위한 설정 파일이다. 어떤 OS를 사용할지, 어떤 프로그램을 설치할지 등의 정보를 포함하고 있다.
4. Docker Hub
도커 이미지를 공유하고 다운로드할 수 있는 저장소.
예를 들어 nginx, mysql 등의 공식 이미지를 바로 가져와 사용할 수 있다.
'Docker' 카테고리의 다른 글
Docker services 내부 설정 상세 정리 (0) | 2025.03.10 |
---|---|
Docker Compose (0) | 2025.03.10 |
Docker Desktop에서 container 실행해보기 (0) | 2025.03.10 |
Window에서 도커 설치 (0) | 2025.03.10 |
VM에 Docker 설치하기 (0) | 2025.03.10 |